2014-05-06 19 views
5

Geçenlerde oluştururken MSBuild (komut satırı args ile API veya Executable)VS 2013 MSBuild

Sayı 1. kullanarak dışarıdan oluştururken sorunları sırt sırta neden oldu Visual Studio 2013 geçiş yaptık MSBuild ile Birim Testlerimiz için gerekli olan Sahte meclisleri üretmez, bu da hatalar yaratır. Görsel stüdyonun basit bir yapısı, yeni bir sahte meclisin oluşturulması gerekene kadar bunu geçici olarak düzeltir.

Sayı 2. bu aşağıdaki ile şikayet kod analizi çalıştırırken:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis\Microsoft.CodeAnalysis.targets(284,5): 
error MSB4127: The "CodeAnalysis" task could not be instantiated from the assembly "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis\.\FxCopTask.dll". 

Please verify the task assembly has been built using the same version of the Microsoft.Build.Framework assembly as the one installed on your computer and that your host application is not missing a binding redirect for Microsoft.Build.Framework. Unable to cast object of type 'Microsoft.Build.Tasks.CodeAnalysis' to type 'Microsoft.Build.Framework.ITask'. 

Ben sadece Visual Studio 2013 benim makinede yüklü olan, görünüşe sorunu düzeltmek olabilir eski bir sürümünü yükleyerek, ama bu Yapabileceğim bir şey değil. (VS 2013 Önceki MSBuild'e farklı bir dizinde bulunan kendi MSBuild 12.0 ile birlikte gönderilir).

Ben

msbuild.exe "path\solution.sln" /property:Configuration=Debug 

cevap

4

Yani, Visual Studio 2013 yeni sürümü ile geliyor ... neden Visual Studio herhangi bir farklı MSBuild için davranıyor, ben sadece şöyle bir çözüm dosyayı işaret ediyorum emin değilim MSBuild yani MSBuild 12.0. Yüklendikten sonra, yeni sürümü varsayılan olarak kullanılacak şekilde yolu değiştirir. Çözümünüz Visual Studio 2012 ile derler gibi

görünüyor, aşağıdaki gibi

C MSBuild.exe tam yolunu belirtebilirsiniz: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 msbuild \ "yol \ solution.sln"/ özelliği: Yapılandırma = ayıklama

veya MsBuild

çalıştırmadan önce aşağıdaki çalıştırarak görsel stüdyo 2012 ortam değişkenlerini ayarlamak "% VS110COMNTOOLS%" \ vsvars32.bat // VS2012 ortam değişkenleri

DÜZENLEME: MSbuild 12.0 derlemelerini kullanma "C: \ Program Files (x86) \ MSBuild \ 12.0 \ Bin \" sorunu kod çözümlemesi hatası ile giderir.

+0

Bu dizini% VS110COMNTOOLS% almadım. Ayrıca C# MSBuild API'sini kullanıyorum MSBuild yürütülebilir çağrısını değiştirmenin herhangi bir yolunu göremiyorum. VS 2013'te (başarılı bir şekilde çalışıyor) oluşturduğumda, araçlar sürümü geçersiz kılmadığı sürece (4.0'a ayarlı) MSBuild 12'yi çağırdığını varsayalım. – Jack

+0

Tamam, klasör sadece Visual Studio 2012 kuruluysa orada olacaktır. MSBuild'i programlı olarak çağırıyorsanız, araç seti sınıfının ToolsVersion değerini 4.0 http://msdn.microsoft.com/en-us/library/microsoft.build.buildengine.toolset(v=vs.110).aspx olarak ayarlayın. –

+0

ToolsVersion'ı hem bir komut satırı argümanı kullanarak hem de C# API'sindeki araç takımı aracılığıyla ayarlamayı denedim. Ne sorunu düzeltmek için görünmüyor. Ayrıca, sahip olduğum başka bir sorunu gideren "VisualStudioVersion" özelliği ile oynamaya çalıştım. – Jack