Windows SDK 7.1 kullanarak msbuild'i komut satırından nasıl çalıştırabilirim?


141

CI sunucumuzda .NET 4.0 desteği kuruyorum. .NET 4.0 ve .NET araçlarını Windows 7.1 SDK'dan yükledim.

.NET 2.0 ve 3.5'te bu işe yaradı. .NET 4 ile, Başlat menüsünden "Windows SDK 7.1 Komut İstemi" ni çalıştırdığımda,

The x86 compilers are not currently installed. x86-x86
Please go to Add/Remove Programs to update your installation.
.
Setting SDK environment relative to C:\Program Files\Microsoft
SDKs\Windows\v7.1
\.
Targeting Windows Server 2008 x86 Debug

Sonra msbuild çalıştırmak çalıştığınızda, ben olsun:

C:\Program Files\Microsoft SDKs\Windows\v7.1>msbuild
'msbuild' is not recognized as an internal or external command,
operable program or batch file.

C:\Program Files\Microsoft SDKs\Windows\v7.1>

Çalışma zamanını ve SDK'yı yüklemenin msbuild'i çalıştıramayacak bir sistemle bırakacağına inanamıyorum ... Açık bir adımı atladım veya Windows Update'i gizledim mi, pes etme ve sistem yolunu kesmeye başlama zamanı mı ?


MS Build ne yapmaya çalışıyor? Bu bir C ++ projesiyse, x86 derleyicilerinin kurulu olduğundan emin olun. CI sunucunuz Sunucu Çekirdeğiyse,
WOW64'ü

Hayır - Windows Server 2008 SP1'deki düz .NET 4.0 web uygulamaları ...
Dylan Beattie

Eee, bu yüzden lisans ücreti ödemeden bir yapı sunucusu yapılandırabileceğine inanamıyor musun? VS lisansı birden fazla makineye kurulum yapmanızı sağlar. Bundan yararlanmanızı tavsiye ederim.
Hans Passant

%VCTools%Ortam değişkeni ne olarak ayarlanmış? Bir yola ayarlanmalıdır. Does cl.exebu yolda var? Ayrıca İngilizce olmayan bir Windows mu kullanıyorsunuz? Yerelleştirilmiş Windows yüklemesinde bu sorunun bazı raporlarını duydum.
vcsjones

Yanıtlar:


292

Etkinleştirmek için msbuildde Komutanlığı İstemi , sadece sizin makinede yüklemek .NET Framework 4 yolunu eklemek zorunda PATHortam değişkeni.

Ortam değişkenlerine aşağıdaki yollarla erişebilirsiniz:

  1. Bilgisayar üzerinde sağ tıklama
  2. Özellikler'i tıklayın
  3. Ardından , sol gezinme çubuğundaki Gelişmiş sistem ayarları'nı tıklayın.
  4. Bir sonraki iletişim kutusunda Ortam değişkenleri'ni tıklayın.
  5. İçin aşağı kaydırın PATH
  6. Çerçeveye giden yolu içerecek şekilde düzenleyin ( buradaki son girişten sonra bir " ; " unutmayın ).

Referans olarak, yolum C:\Windows\Microsoft.NET\Framework\v4.0.30319

21.03.2018 Yol Güncellemesi:

MSBuild 12 (2013) / VS 2013 / .NET 4.5.1+ ve sonrası MSBuild artık Visual Studio'nun bir parçası olarak yüklenmiştir .

Referans olarak, VS2015 ile makinemi kurduktan sonra yolum C:\Program Files (x86)\MSBuild\14.0\Bin


2
Bunu da
msbuild'i

36
Yeni yolu ekledikten sonra Sor'u yeniden başlatmayı unutmayın.
Campinho

3
Ayrıca, ';' işaretinden sonra boşluk bırakamazsınız. karakter.
Michael Fry

4
Bu eski dizindir, MSBuild .NET framework ile yüklenmez, aslında soru zamanında bile kullanımdan kaldırıldı bilgi. msdn.microsoft.com/tr-tr/library/hh162058.aspx
JM Becker

8
MSBuild 15.0 için yol değişti. Şimdi VisualStudio 2017 kurulum dizini altında. Örneğin: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin. Bkz. Docs.microsoft.com/en-us/visualstudio/msbuild/…
Assaf İsrail

73

Bundan Visual Studio 2013sonra, MSbuildVisual Studio'nun bir parçası olarak gelir. Daha önce MSBuild'in bir parçası olarak kuruldu. NET Framework.

MSBuild doğrudan % ProgramFiles% altına kurulur . Bu nedenle, MSBuild yolu Visual Studio sürümüne bağlı olarak farklı olabilir.

For Visual Studio 2015yolundan MSBuildDİR"%ProgramFiles(x86)%\MSBuild\14.0\Bin\MSBuild.exe"

For Visual Studio 15 Previewyolundan MSBuildDİR"%ProgramFiles(x86)%\MSBuild\15.0\Bin\MSBuild.exe"

Ayrıca, bazı yeni MSBuild özellikleri eklendi ve bazıları değiştirildi. Daha fazla bilgi için buraya bakın

Güncelleme 1: VS 2017

Visual Studio 2017'nin yayımlanmasıyla MSBuild'in konumu yeniden değişti . Şimdi kurulum dizini %ProgramFiles(x86)%\Microsoft Visual Studio\2017\[VS Edition]\MSBuild\15.0\Bin\. Bir Enterprise sürümüm olduğundan, makinem için MSBuild konumu"%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSbuild.exe"


7

"Cmd" yerine "Visual Studio 20XX için Geliştirici Komut İstemi" kullanıldığında, ortam değişkenlerinize eklemek zorunda kalmadan msbuild yolu otomatik olarak ayarlanır.


1
Hayır, değil (en azından sadece
msbuild'in

6

Bat dosyanız aşağıdaki gibi olabilir:

CD C:\Windows\Microsoft.NET\Framework64\v4.0.30319

msbuild C:\Users\mmaratt\Desktop\BladeTortoise\build\ALL_BUILD.vcxproj

PAUSE

EXIT

1
Msbuild dosyasının tam yolunu vermek, geçerli dizinde sabit kodlamak yerine bir proje dosyasını arayabileceğiniz anlamına gelir. MSBuild'in C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild *.*projyeni sürümlerinin (2013 dolaylarında) yolunun farklı olduğuna rağmen, böyle bir şey bunu yapabilir.
jpaugh

6

Visual Studio 2019 (en azından Önizleme) için şimdi şu konumdadır:

C: \ Program Dosyaları (x86) \ Microsoft Visual Studio \ 2019 \ Preview \ MSBuild \ Current \ Bin \ MSBuild.exe

Sürecin resmi 2019 sürümü için benzer olacağını düşünüyorum.


Doğru. Visual Studio 2019'da yol C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MsBuild.exe.
eddex

2

C # 6 sözdizimi ile derleme yapabilmek için bunu şu yoldan kullanın:

C: \ Program Dosyaları (x86) \ MSBuild \ 14.0 \ Bin


-3

SetEnv.cmdİçin "SDK komut istemi" kısayol çalışır olduğunu kontrol etmektedir komut cl.exegirişlerini kurmadan önce çeşitli yerlerde eklemek PATH. Bu nedenle, yerel bir C derleyicisi yüklü değilse hiçbir şey eklenemez.

Bunu düzeltmek için, aşağıdaki yamayı uygulayın <SDK install dir>\Bin\SetEnv.cmd. Bu aynı zamanda <SDK install dir>\Binve alt klasörlerde bulunan diğer araçlara giden eksik yolları da düzeltir . Elbette, bu hatayı çözmek için C derleyicisini yükleyebilirsiniz.

--- SetEnv.Cmd_ 2010-04-27 19:52:00.000000000 +0400
+++ SetEnv.Cmd  2013-12-02 15:05:30.834400000 +0400
@@ -228,10 +228,10 @@

 IF "%CURRENT_CPU%" =="x64" (
   IF "%TARGET_CPU%" == "x64" (
+    SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;"
+    SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\x64;%WindowsSdkDir%Bin\x64;%WindowsSdkDir%Bin;"
     IF EXIST "%VCTools%\amd64\cl.exe" (
       SET "VCTools=%VCTools%\amd64;%VCTools%\VCPackages;"
-      SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\x64;%WindowsSdkDir%Bin\x64;%WindowsSdkDir%Bin;"
-      SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;"
     ) ELSE (
       SET VCTools=
       ECHO The x64 compilers are not currently installed.
@@ -239,10 +239,10 @@
       ECHO .
     )
   ) ELSE IF "%TARGET_CPU%" == "IA64" (
+    SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;"
+    SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\x64;%WindowsSdkDir%Bin\x64;%WindowsSdkDir%Bin;"
     IF EXIST "%VCTools%\x86_ia64\cl.exe" (
       SET "VCTools=%VCTools%\x86_ia64;%VCTools%\VCPackages;"
-      SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\x64;%WindowsSdkDir%Bin\x64;%WindowsSdkDir%Bin;"
-      SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;"
     ) ELSE (
       SET VCTools=
       ECHO The IA64 compilers are not currently installed.
@@ -250,10 +250,10 @@
       ECHO .
     )
   ) ELSE IF "%TARGET_CPU%" == "x86" (
+    SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;"
+    SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;"
     IF EXIST "%VCTools%\cl.exe" (
       SET "VCTools=%VCTools%;%VCTools%\VCPackages;"
-      SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;"
-      SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;"
     ) ELSE (
       SET VCTools=
       ECHO The x86 compilers are not currently installed.
@@ -263,10 +263,10 @@
   )
 ) ELSE IF "%CURRENT_CPU%" =="IA64" (
   IF "%TARGET_CPU%" == "IA64" (
+    SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;"
+    SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\IA64;%WindowsSdkDir%Bin\IA64;%WindowsSdkDir%Bin;"
     IF EXIST "%VCTools%\IA64\cl.exe" (
       SET "VCTools=%VCTools%\IA64;%VCTools%;%VCTools%\VCPackages;"
-      SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\IA64;%WindowsSdkDir%Bin\IA64;%WindowsSdkDir%Bin;"
-      SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;"
     ) ELSE (
       SET VCTools=
       ECHO The IA64 compilers are not currently installed.
@@ -274,10 +274,10 @@
       ECHO .
     )
   ) ELSE IF "%TARGET_CPU%" == "x64" (
+    SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;"
+    SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\IA64;%WindowsSdkDir%Bin\IA64;%WindowsSdkDir%Bin;"
     IF EXIST "%VCTools%\x86_amd64\cl.exe" (
       SET "VCTools=%VCTools%\x86_amd64;%VCTools%\VCPackages;"
-      SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools\IA64;%WindowsSdkDir%Bin\IA64;%WindowsSdkDir%Bin;"
-      SET "FxTools=%FrameworkDir64%\%FrameworkVersion%;%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework64\v3.5;%windir%\Microsoft.NET\Framework\v3.5;"
     ) ELSE (
       SET VCTools=
       ECHO The VC compilers are not currently installed.
@@ -285,10 +285,10 @@
       ECHO .
     )
   ) ELSE IF "%TARGET_CPU%" == "x86" (
+    SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;"
+    SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;"
     IF EXIST "%VCTools%\cl.exe" (
       SET "VCTools=%VCTools%;%VCTools%\VCPackages;"
-      SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;"
-      SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;"
     ) ELSE (
       SET VCTools=
       ECHO The x86 compilers are not currently installed.
@@ -298,10 +298,10 @@
   )
 ) ELSE IF "%CURRENT_CPU%"=="x86" (
   IF "%TARGET_CPU%" == "x64" (
+    SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;"
+    SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;"
     IF EXIST "%VCTools%\x86_amd64\cl.exe" (
       SET "VCTools=%VCTools%\x86_amd64;%VCTools%\VCPackages;"
-      SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;"
-      SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;"
     ) ELSE (
       SET VCTools=
       ECHO The x64 cross compilers are not currently installed.
@@ -309,10 +309,10 @@
       ECHO .
     )
   ) ELSE IF "%TARGET_CPU%" == "IA64" (
+    SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;"
+    SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;"
     IF EXIST "%VCTools%\x86_IA64\cl.exe" (
       SET "VCTools=%VCTools%\x86_IA64;%VCTools%;%VCTools%\VCPackages;"
-      SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;"
-      SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;"
     ) ELSE (
       SET VCTools=
       ECHO The IA64 compilers are not currently installed.
@@ -320,10 +320,10 @@
       ECHO .
     )
   ) ELSE IF "%TARGET_CPU%" == "x86" (
+    SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;"
+    SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;"
     IF EXIST "%VCTools%\cl.exe" (
       SET "VCTools=%VCTools%;%VCTools%\VCPackages;"
-      SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;"
-      SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;"
     ) ELSE (
       SET VCTools=
       ECHO The x86 compilers are not currently installed. x86-x86
@@ -331,15 +331,17 @@
       ECHO .
     )
   )
-) ELSE IF EXIST "%VCTools%\cl.exe" (
-  SET "VCTools=%VCTools%;%VCTools%\VCPackages;"
-  SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;"
-  SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;"
 ) ELSE (
-  SET VCTools=
-  ECHO The x86 compilers are not currently installed. default
-  ECHO Please go to Add/Remove Programs to update your installation.
-  ECHO .
+  SET "FxTools=%FrameworkDir32%%FrameworkVersion%;%windir%\Microsoft.NET\Framework\v3.5;"
+  SET "SdkTools=%WindowsSdkDir%Bin\NETFX 4.0 Tools;%WindowsSdkDir%Bin;"
+  IF EXIST "%VCTools%\cl.exe" (
+    SET "VCTools=%VCTools%;%VCTools%\VCPackages;"
+  ) ELSE (
+    SET VCTools=
+    ECHO The x86 compilers are not currently installed. default
+    ECHO Please go to Add/Remove Programs to update your installation.
+    ECHO .
+  )
 )

 :: --------------------------------------------------------------------------------------------
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.