cevap

19

Temel olarak devenv (Visual Studio) MSBuild'i sarar ve çok sayıda Visual Studio'ya özgü özellik ekler.

Devenv'i kullanmak için bilgisayarınızda Visual Studio yüklü olmalıdır. MSBuild'i kullanmak için sadece .NET çerçevesine sahip olmanız gerekir.

7

Bizim için en büyük fark, devenv'in kurulumcu projelerini (* .vdproj) işleyeceği, msbuild ise. Doğru olarak hatırlarsam, msbuild başvurulan derlemeleri bulmak için çok daha az bağışlayıcıdır (özellikle yollar biraz kapalıysa).

+1

1 olduğuna karar vermek size bırakıyoruz. bağımlılığı bakmak gibi, ben (bkz: burada Microsoft.Common.Targets tanımlanan bu VS ve MsBuild için aynı olduğunu düşünüyorum: http://www.beefycode.com/post/Resolving-Binary-References-in-MSBuild .aspx) –

+2

Visual Studio'da bir çözümün oluşturulacağı, ancak doğru konumda olmayan derlemeler nedeniyle msbuild'den doğrudan oluşmayacağı durumlar gördüm. VisualStudio, kod ağacında bir arama yapar gibi görünüyor ve yol sorunlarını düzeltir. Devenv.exe'nin aynı otomatik düzeltmeyi yapacağı varsayılıyordu, ancak durum böyle olmayabilir. – Pedro

5

VSS/CruiseControl.NET'ten (yapılandırmamızda devenv kullandığını tahmin ettiğim gibi) msgstr (en azından yapılandırmış olduğumuz gibi) TFS'ye taşındıkça keşfettiğimiz şeylerden biri, bazen ProjectGuids senkronizasyondan çıkar.

Demek Proje A referansları Proje B ve Proje A için proje veya çözüm dosyası ProjectGuid ve Proje B'nin proje dosyasının yolunu vardır. Ancak, Project B ProjectGuid'in her ne sebeple değiştiği ve Proje A'nın proje veya çözüm dosyasının bunu yansıtmak için güncellenmediği durumlarda.

Devenv, yalnızca Project B proje dosyasının dosya yolunu kullandığı veya buna geri döndüğü için iyidir. Bununla birlikte, Msbuild bu noktada soğuğu durdurur çünkü ProjectGuids eşleşmezse bu bir hareketsizdir. Bu noktada, Visual Studio'da (I düşünün proje çalışmalarını kaldırarak ve yeniden ekleyerek) veya el ile Not Defteri'nde veya bir şeyde düzeltebilirsiniz.

Projeyi vdproj sinyalizasyon için daha iyi (projeye yolu bilindiği ProjectGuid veya müsamaha kesin riayet)