मैं Windows SDK 7.1 का उपयोग करके कमांड लाइन से msbuild कैसे चलाऊँ?


141

मैं हमारे CI सर्वर पर .NET 4.0 सपोर्ट सेट कर रहा हूं। मैंने .NET 4.0, और Windows 7.1 SDK से .NET उपकरण स्थापित किए हैं।

.NET 2.0 और 3.5 पर, बस काम किया। .NET 4 के साथ, जब मैं स्टार्ट मेनू से "विंडोज एसडीके 7.1 कमांड प्रॉम्प्ट" चलाता हूं, तो यह शिकायत करता है

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

फिर जब मैं msbuild चलाने की कोशिश करता हूं, मुझे मिलता है:

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>

मैं काफी विश्वास नहीं कर सकता कि रनटाइम को स्थापित करने और एसडीके आपको एक ऐसी प्रणाली के साथ छोड़ देगा जो msbuild नहीं चला सकता है ... क्या मैंने कुछ स्पष्ट कदम या विंडोज अपडेट को याद किया है, या सिस्टम को छोड़ना और सिस्टम पथ को हैक करना शुरू करने का समय है ?


MS Build क्या बनाने की कोशिश कर रहा है? यदि यह C ++ प्रोजेक्ट है, तो सुनिश्चित करें कि x86 कंपाइलर स्थापित हैं। यदि आप CI सर्वर सर्वर कोर हैं, तो सुनिश्चित करें कि आप WOW64 स्थापित करें (हालांकि मुझे सर्वर कोर पर CI चलाने में कोई सफलता नहीं मिली है)
vcsjones

नहीं - सादा .NET 4.0 वेब ऐप विंडोज सर्वर 2008 SP1 पर ...
डायलन बीट्टी

एर्म, तो आप काफी विश्वास नहीं कर सकते हैं कि आप लाइसेंस शुल्क का भुगतान किए बिना एक बिल्ड सर्वर को कॉन्फ़िगर कर सकते हैं? वीएस लाइसेंस आपको एक से अधिक मशीनों पर स्थापित करने की अनुमति देता है। मैं आपको इसका लाभ उठाने की सलाह दूंगा।
हंस पासंट

%VCTools%पर्यावरण चर किसके लिए निर्धारित है? इसे एक रास्ते पर सेट किया जाना चाहिए। क्या cl.exeउस रास्ते में मौजूद है? इसके अलावा, आप एक गैर-अंग्रेजी विंडोज पर हैं? मैंने स्थानीय Windows स्थापना पर इस समस्या की कुछ रिपोर्टें सुनी हैं।
vcsjones

जवाबों:


292

कमांड प्रॉम्प्टmsbuild में सक्षम करने के लिए , आपको बस पर्यावरण चर के लिए अपने मशीन पर .NET 4 फ्रेमवर्क स्थापित करने के लिए पथ जोड़ना होगा ।PATH

आप द्वारा पर्यावरण चर का उपयोग कर सकते हैं:

  1. Computer पर राईट क्लिक करना
  2. गुण पर क्लिक करें
  3. फिर बाईं नेविगेशन पट्टी पर उन्नत सिस्टम सेटिंग्स पर क्लिक करें
  4. अगले संवाद बॉक्स में पर्यावरण चर पर क्लिक करें
  5. नीचे स्क्रॉल करें PATH
  6. फ्रेमवर्क में अपना रास्ता शामिल करने के लिए इसे संपादित करें ( यहाँ एक अंतिम प्रविष्टि के बाद " a ; " को न भूलें )।

संदर्भ के लिए, मेरा रास्ता था C:\Windows\Microsoft.NET\Framework\v4.0.30319

3/21/18 पथ अद्यतन:

MSBuild 12 (2013) / VS 2013 / .NET 4.5.1+ और उसके बाद MSBuild अब Visual Studio के एक भाग के रूप में स्थापित है

संदर्भ के लिए, VS2015 के साथ मेरी मशीन स्थापित मेरा रास्ता है C:\Program Files (x86)\MSBuild\14.0\Bin


2
मैं ऐसा करने के लिए msbuild हमेशा PowerShell में उपलब्ध होने के लिए ऐसा करता हूं
Wiebe Tijsma

36
नया पथ जोड़ने के बाद प्रॉम्प्ट को पुनरारंभ करने के लिए बस याद रखें।
कैम्पिन्हो

3
इसके अलावा, आपके पास ';' के बाद कोई श्वेत स्थान नहीं हो सकता है। चरित्र।
माइकल फ्राई

4
यह पुरानी निर्देशिका है, MSBuild .NET फ्रेमवर्क के साथ स्थापित नहीं होता है, वास्तव में सवाल के समय भी यह जानकारी नहीं दी गई थी। msdn.microsoft.com/en-us/library/hh162058.aspx
JM Becker

8
MSBuild 15.0 के लिए पथ बदल गया है। यह अब VisualStudio 2017 इंस्टॉल डायरेक्टरी के अंतर्गत है। उदाहरण के लिए C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin:। देखें docs.microsoft.com/en-us/visualstudio/msbuild/...
आसफ़ इसराइल

73

से Visual Studio 2013बाद से, MSbuildदृश्य स्टूडियो के एक भाग के रूप में आता है। इससे पहले, MSBuild के एक भाग के रूप में स्थापित किया गया था। शुद्ध रूपरेखा।

MSBuild को सीधे ProgramFiles% के तहत स्थापित किया गया है । इसलिए, Visual Studio के संस्करण के आधार पर MSBuild के लिए पथ भिन्न हो सकता है।

के लिए Visual Studio 2015, का मार्ग MSBuildहै"%ProgramFiles(x86)%\MSBuild\14.0\Bin\MSBuild.exe"

के लिए Visual Studio 15 Preview, का मार्ग MSBuildहै"%ProgramFiles(x86)%\MSBuild\15.0\Bin\MSBuild.exe"

साथ ही, कुछ नए MSBuild गुणों को जोड़ा गया है और कुछ को संशोधित किया गया है। अधिक जानकारी के लिए यहां देखें

अपडेट 1: वीएस 2017

दृश्य स्टूडियो 2017 की रिलीज़ के साथ MSBuild के लिए स्थान फिर से बदल गया है । अब इंस्टॉलेशन डायरेक्टरी के अधीन है %ProgramFiles(x86)%\Microsoft Visual Studio\2017\[VS Edition]\MSBuild\15.0\Bin\। चूंकि, मेरे पास एक एंटरप्राइज़ संस्करण है, मेरी मशीन के लिए MSBuild स्थान है"%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSbuild.exe"


7

"Cmd" के बजाय "डेवलपर कमांड प्रॉम्प्ट फॉर विजुअल स्टूडियो 20XX" का उपयोग करके अपने पर्यावरण चर में इसे जोड़ने के बिना स्वचालित रूप से msbuild के लिए पथ निर्धारित किया जाएगा।


1
नहीं, यह नहीं है (कम से कम पर्यावरण में नहीं जहां केवल msbuild स्थापित है, लेकिन दृश्य स्टूडियो नहीं है)
Ezh

6

आपकी बैट फाइल इस प्रकार हो सकती है:

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

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

PAUSE

EXIT

1
Msbuild का पूरा रास्ता देने का मतलब है कि आप इसे हार्ड-कोडिंग के बजाय वर्तमान निर्देशिका में प्रोजेक्ट फ़ाइल के लिए देख सकते हैं। ऐसा कुछ C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild *.*projहो सकता है, हालांकि ध्यान दें कि MSBuild के नए संस्करणों (लगभग 2013) का मार्ग अलग है।
jpaugh

6

विजुअल स्टूडियो 2019 के लिए (पूर्वावलोकन, कम से कम) अब इसमें है:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ पूर्वावलोकन \ MSBuild \ Current \ Bin \ MSBuill.exe

मुझे लगता है कि आधिकारिक 2019 रिलीज के लिए प्रक्रिया समान होगी।


सही बात। विजुअल स्टूडियो 2019 में रास्ता है C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MsBuild.exe
eddex


-3

SetEnv.cmdस्क्रिप्ट है कि "एसडीके कमांड प्रॉम्प्ट" के लिए शॉर्टकट रन चेकों cl.exeविभिन्न स्थानों में जोड़ने के लिए प्रविष्टियों की स्थापना से पहलेPATH । तो यह कुछ भी जोड़ने में विफल रहता है अगर एक देशी सी संकलक स्थापित नहीं है।

इसे ठीक करने के लिए, निम्न पैच को लागू करें <SDK install dir>\Bin\SetEnv.cmd। यह <SDK install dir>\Binऔर उप-फ़ोल्डर में स्थित अन्य टूल के गुम रास्तों को भी ठीक कर देगा । बेशक, आप इस बग के चारों ओर काम करने के बजाय सी कंपाइलर स्थापित कर सकते हैं।

--- 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 .
+  )
 )

 :: --------------------------------------------------------------------------------------------
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.