Microsoft.WebApplication.targets बिल्ड सर्वर पर नहीं मिला था। आपका समाधान क्या है?


410

बिल्ड सर्वर पर मेरा प्रोजेक्ट बनाने की कोशिश करने से मुझे निम्न त्रुटि मिलती है:

Microsoft (R) Build Engine Version 4.0.30319.1
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

मैंने कुछ महीने पहले इस समस्या को हल सर्वर पर Visual Studio 2010 स्थापित करने के साथ हल किया। लेकिन अब मैं स्क्रैच से एक नया सर्वर सेटअप कर रहा हूं, और मैं जानना चाहता हूं कि क्या इस मुद्दे को हल करने के लिए कोई बेहतर समाधान है।


1
क्या वेब एप्लिकेशन प्रोजेक्ट्स को हटा दिया गया है? मुझे आश्चर्य है कि उन्हें बनाने के लिए विज़ुअल स्टूडियो के पुराने संस्करणों की आवश्यकता के लिए औचित्य क्या है?
21

1
इस बिंदु पर अधिक, क्या आप वास्तव में बिल्ड सर्वर के माध्यम से तैनात हैं? जैसे मैं नहीं, मैं भी समाधान में एक अलग वेब इंस्टॉलर परियोजना है ... और यह अभी भी इस खूनी बात चाहता है ... जवाब = इसे proj फ़ाइल से हटा दें! आसान।
पॉल ज़हरा


1
<Import Project="..\Packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />रास्ते को बदलकर तय किया $(VSToolsPath)गया:<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
GJ

जवाबों:


207

प्रश्न के शीर्षक का उत्तर देने के लिए (लेकिन आपके द्वारा प्राप्त किए जा रहे आउटपुट के बारे में प्रश्न नहीं):

निम्न फ़ोल्डर को अपने देव मशीन से आपके बिल्ड सर्वर पर कॉपी करना, यदि यह सिर्फ वेब अनुप्रयोग है तो इसे ठीक करता है

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications

अपने निर्माण को कैसे तोड़ता है, उसके अनुसार x86 निकालें। यदि आपके पास अन्य परियोजना प्रकार हैं, तो आपको संभवतः पूरे msbuild फ़ोल्डर की प्रतिलिपि बनाने की आवश्यकता होगी।


11
इस v2.0 v11.0 के लिए v10.0 की जगह के बाद v2.0 परियोजना के साथ m2 के लिए काम किया
DenNukem

2
खिचड़ी भाषा हम सिर्फ इस के बजाय MSBuild उपकरण स्थापित? microsoft.com/en-us/download/confirmation.aspx?id=40760
user20358

1
काश, MSBuild उपकरण स्थापित करने के लिए VisualStudio 2013 में ठीक संकलन करने वाली परियोजनाओं का निर्माण करना पर्याप्त नहीं है
माइकल शॉ

मुझे v11.0 पर वेब फ़ोल्डर को कॉपी करना था ताकि वीएस2013 को स्थापित करने के बाद यह काम कर सके, यह वहां गायब था। VS में संकलित कर सकते हैं लेकिन MSBUILD के माध्यम से सीधे नहीं।
मार्टिन ब्रौन

9
VS2017 के लिए काम किया। बस C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ vXX.0 \ WebApplications को C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v15.0
WebApplications की प्रतिलिपि बनाएँ

95

यदि वीएस स्थापित नहीं है, तो बिल्डिंग और प्रकाशन WAP का समर्थन नहीं किया जाता है। इसके साथ ही कहा, अगर आप वास्तव में वीएस को स्थापित नहीं करना चाहते हैं तो आपको सभी फाइलों को कॉपी करना होगा %ProgramFiles32%\MSBuild\Microsoft\

आपको वेब डिप्लॉय टूल को भी इंस्टॉल करना होगा । मुझे लगता है यही है।


4
सय्यद - नीचे उत्तर देखिए dansomething से - क्या आपका उत्तर सही है? यहां तक ​​कि वीएस 2010 शेल इंटीग्रेटेड पैकेज स्थापित करना, और .NET एसडीके वेब एप्लिकेशन प्रोजेक्ट समर्थन को सही ढंग से स्थापित नहीं करेगा?
एडम

@SayedIbrahimHashimi क्या आपको मैन्युअल फ़ोल्डर की प्रतिलिपि बनाने के लिए DLL को GAC के साथ पंजीकृत करना होगा?
TheOptimusPrimus

और Microsoft.TextTemplating.targets के बारे में क्या? उन्हें अपने फ़ोल्डर में लाने के लिए मुझे क्या करना होगा? C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0
डेवलपर

@ClarkKent, क्षमा करें मैं TextTemplating फ़ाइल से बात नहीं कर सकता। मैं उन लोगों से परिचित नहीं हूँ।
इब्राहिम हाशिमी

77

UPD: VS2017 के रूप में, बिल्ड टूल में वर्कलोड है जो इस समस्या को पूरी तरह से समाप्त करता है। देखें @ उत्तर

यदि आप बिल्ड सर्वर पर कुछ भी संशोधित नहीं करना चाहते हैं, और आप अभी भी प्रोजेक्ट को स्रोत नियंत्रण से बाहर बनाना चाहते हैं, तो स्रोत बायनेरिज़ को आवश्यक नियंत्रण में रखना एक अच्छा विचार हो सकता है। आपको इस तरह दिखने के लिए अपनी परियोजना फ़ाइल में आयात अनुभाग को संशोधित करना होगा:

<Import Project="$(SolutionDir)\BuildTargets\WebApplications\Microsoft.WebApplication.targets" />
<Import Condition="false" Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

पहली पंक्ति नए स्थान से वास्तविक आयात है जो समाधान निर्देशिका के सापेक्ष है। दूसरा एक एक बंद-बंद संस्करण है (Condition="false" मूल लाइन ) है जो विजुअल स्टूडियो के लिए अभी भी आपकी परियोजना को एक वैध वेब एप्लिकेशन प्रोजेक्ट मानता है (यह वह चाल है जो वीएस 2010 SP1 खुद करता है)।

को कॉपी करने के C:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplicationsलिए मत भूलनाBuildTargets अपने स्रोत नियंत्रण में फ़ोल्डर।


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

1
यह एक अच्छा उत्पाद है, लेकिन इस परिवर्तन के लिए प्रत्येक csproj फ़ाइल को बदलना आवश्यक है। यह मुश्किल है अगर आप समाधान के लिए नई परियोजनाओं को जोड़ते हैं। बेशक यह कस्टम प्रोजेक्ट टेम्प्लेट से हल किया जा सकता है, लेकिन फिर भी .. वैसे भी, इस जवाब ने मुझे सही दिशा की ओर इशारा किया। धन्यवाद!
100r

75

अभी, 2017 में, आप MSBuildTools के साथ WebApplication redists इंस्टॉल कर सकते हैं। बस इस पृष्ठ पर जाएं जो MSBuild 2017 टूल डाउनलोड करेगा और इंस्टॉलेशन क्लिक करते समय Web development build toolsइन लक्ष्यों को स्थापित करने के लिए: यहां छवि विवरण दर्ज करें

यह गुम पुस्तकालयों को C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsडिफ़ॉल्ट रूप से स्थापित करने की ओर ले जाएगा


2
मैं बहुत आश्चर्यचकित हूं, कि मेरे पांच साल पुराने स्रोत नियंत्रण में पैकिंग के बारे में, और यह संशोधन अभी भी वोट प्राप्त कर रहे हैं, जबकि यह बॉक्स उत्तर से सही है।
एंड्री के

2
@AndriyK आपका समाधान मेरे सुझाव के अनुसार थोड़ा अलग है और मैं समझता हूं कि कोई व्यक्ति आपको मेरा पसंद क्यों कर सकता है ... जब तक कि यह सिर्फ आलस्य नहीं है; डी
सोरीडर

2
इसे और अधिक सामान्य बनाने के लिए, Visual Studio के भविष्य के संस्करणों के लिए, आप Visualstudio.microsoft.com/downloads से नवीनतम बिल्ड टूल डाउनलोड कर सकते हैं और पृष्ठ के नीचे स्क्रॉल करें और नीचे "Visual Studio के लिए टूल" अनुभाग का विस्तार करें, फिर "डाउनलोड करें" विजुअल स्टूडियो के लिए टूल्स का निर्माण करें ”। वर्तमान में ये वीएस 2017 के लिए हैं, लेकिन मुझे लगता है कि यह भविष्य के संस्करणों के लिए समान होगा। वैसे, अगर आपको अपने CI टूल (जैसे जेनकिन्स) के लिए msbuild.exe के लिए पथ की आवश्यकता है, तो वीएस 2017 के लिए इसे C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild's 15.0 पर स्थापित किया जाएगा। \ Bin \ msbuild.exe।
साइमन टेवेसी

2
बिल्ड-सर्वर-संगत (पढ़ें: कमांड लाइन) ऐसा करने का तरीका है choco install visualstudio2017-workload-webbuildtools
पॉल हिक्स

1
यह भी ध्यान दें कि "वेब डेवलपमेंट बिल्ड टूल्स" पैकेज , Microsoft.VisualStudio.Workload.WebBuildToolsको कॉल करके कमांड लाइन के माध्यम से स्थापित किया जा सकता है vs_BuildTools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools। जोड़े --passiveकी जरूरत नहीं है उपयोगकर्ता के हस्तक्षेप करने के लिए।
वाई हा ली

70

आप NuGet पैकेज MSBuild.Microsoft.VisualStudio.Web.targets का भी उपयोग कर सकते हैं , उन्हें अपने विज़ुअल स्टूडियो प्रोजेक्ट (एस) में संदर्भित कर सकते हैं, फिर एंड्री के सुझाव के अनुसार अपने संदर्भ बदल सकते हैं।


2
इसका उपयोग करना असंभव है क्योंकि मुझे पहले समाधान खोलना है लेकिन मैं त्रुटि के कारण नहीं कर सकता।
डेवलपर

यदि समाधान में एक से अधिक परियोजनाएं हैं, तो आपको अभी भी 1. सक्षम होना चाहिए। समाधान खोलें - अनदेखा करें कि वेब प्रोजेक्ट लोड नहीं करता है; 2. नगेट संदर्भ जोड़ें; 3. उसके बाद बताए गए तरीकों में से एक ले लो; आप प्रोजेक्ट फ़ाइल को मैन्युअल रूप से संपादित कर सकते हैं, या TeamCity में env.VSToolsPath चर को ओवरराइड कर सकते हैं।
डेमन

1
क्या यह आधिकारिक तौर पर जारी किया गया एमएस नगेट पैकेज है, या किसी ने इसे बनाया है?
साइमन_विवर

अद्भुत समाधान - वी.एस. के विभिन्न संस्करणों के लिए काम करता है। मुझे .csproj फ़ाइल, YMMV
जॉनो

39
यह आधिकारिक तौर पर जारी किया गया माइक्रोसॉफ्ट नगेट पैकेज नहीं है। मैं इसे जानता हूं क्योंकि मैंने इसे बनाया है।
mak

54

इस पोस्ट के आधार पर यहां आप Microsoft Visual Studio 2010 शेल (एकीकृत) पुनर्वितरण पैकेज डाउनलोड कर सकते हैं और लक्ष्य स्थापित किए गए हैं।

यह बिल्ड सर्वर पर Visual Studio को स्थापित करने की आवश्यकता से बचता है।

मैंने अभी इसे आज़माया है, और यह सत्यापित कर सकता है कि यह काम करता है:

इससे पहले:

त्रुटि MSB4019: आयातित प्रोजेक्ट "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets" नहीं मिला। पुष्टि करें कि घोषणा में पथ सही है, और यह कि फ़ाइल डिस्क पर मौजूद है।

स्थापित करने के बाद:

[सही ढंग से बनाता है]

यह स्पष्ट रूप से एक बिल्ड सर्वर पर विजुअल स्टूडियो को स्थापित करने से कहीं बेहतर समाधान है।


7
यह सबसे आसान और सरल उपाय है IMO। मैं वीएस 2013 का उपयोग कर रहा हूं, और मैंने पाया कि विजुअल स्टूडियो 2013 शेल (पृथक) पुनर्वितरण योग्य था जो काम किया गया था (एकीकृत एक पर निर्भरता के कारण एकीकृत स्थापित नहीं होगा)।
मैट मिलर

@MatthewSkelton - बिल्ड सर्वर का अर्थ क्या है ?
मोहम्मद ज़मीर

2
@BountyMan - एक बिल्ड सर्वर एक सर्वर है जो सॉफ्टवेयर के निरंतर इंटीग्रेशन (CI) का निर्माण या नियंत्रण करता है। उदाहरण: जेनकिंस, टीमसिटी, क्रूज़कंट्रोल इत्यादि
मैथ्यू स्केल्टन

3
वीएस v14.0 के साथ दुर्भाग्य से, पैकेज को स्थापित करने का तरीका नगेट के माध्यम से है, लेकिन चूंकि मेरी समस्या यह थी कि बिल्ड सर्वर में वीएस स्थापित नहीं था (केवल MSBuild), पैकेज स्थापित करना असंभव के बगल में साबित हुआ। मैंने अपने पीसी से सर्वर पर फ़ोल्डर को कॉपी करने से पहले पावरशेल और नूगेट के विभिन्न आधे समर्थित इंस्टॉलेशन के साथ कई घंटे बिताए।
पसक्स

1
@pasx यदि त्रुटि संदेश में "v14" है, तो आप इसके बजाय विज़ुअल स्टूडियो 2015 पृथक शेल स्थापित कर सकते हैं, मेरे लिए काम किया - visualstudioextensibility.com/downloads/vs-shells ("डाउनलोड URL के तहत"; एक अनिवार्य सर्वेक्षण है, आनंद लें!)
डंक

38

MicrosoftWebApplication.targets और "Microsoft Visual Studio Team System 2008 डेटाबेस संस्करण GDR R2" Microsoft.D.Schema के लिए "Microsoft Visual Studio 2010 शेल (एकीकृत) पुनर्वितरण पैकेज" के अलावा, जैसा कि ऊपर उल्लेख किया गया है, नवीनतम Windows SDK। .SqlTasks.targets विजुअल स्टूडियो 2010 को स्थापित करने की आवश्यकता को कम करना चाहिए। हालांकि, वीएस 2010 को स्थापित करना वास्तव में डाउनलोड करने के लिए कम और अंत में कम काम होना चाहिए।


FYI करें - यदि आप एक बिल्ड सर्वर w / बाहर पूर्ण विकसित VS को स्थापित करने पर Sql प्रोजेक्ट्स बनाने की कोशिश कर रहे हैं, तो आप टीम सिस्टम 2008 डेटाबेस संस्करण GDR R2 इंस्टॉलर के साथ भाग्य से बाहर हैं। यह प्री-रेक्स विजुअल स्टूडियो टीम सिस्टम 2008 डेटाबेस संस्करण SP1 (अंग्रेजी) या विजुअल स्टूडियो टीम सिस्टम 2008 सुइट SP1 (अंग्रेजी) और विजुअल स्टूडियो 2008 सर्विस पैक 1. हैं। ऐसा लगता है कि आप .NET फ्रेमवर्क से बाहर SqlServer.targets की प्रतिलिपि बना सकते हैं। v4 निर्देशिका और TeamData msbuild \ Program files \ msbuild \ microsoft \ Visual Studio \ v10.0 \ से बाहर फ़ाइलों को लक्षित करता है और आपके csprojs का निर्माण करेगा।
एथन जे। ब्राउन

यह निश्चित रूप से सबसे सुंदर समाधान नहीं है, लेकिन मेरे लिए समय सबसे महत्वपूर्ण है। बस MSBuild निर्देशिका पर नकल मेरे लिए और अधिक मुद्दों के लिए नेतृत्व।

21
यह वास्तव में महत्वपूर्ण उत्तर है क्योंकि यदि आप एक स्वतंत्र डेवलपर हैं जो क्लाइंट के लिए बिल्ड सर्वर स्थापित कर रहे हैं, तो आप नहीं चाहते कि क्लाइंट को उनके सॉफ्टवेयर का निर्माण करने में सक्षम होने के लिए विजुअल स्टूडियो लाइसेंस बनाए रखना होगा।
Thelsdj

मुझे केवल VS2010 शेल इंटीग्रेटेड पैकेज और EntLib 5 की जरूरत है ताकि मेरा निर्माण हो सके। टीम सिस्टम की जरूरत नहीं थी।
रॉबिन विंसलो

1
वीएस 2010 शेल अब उस लिंक पर उपलब्ध नहीं है, "आप जिस संसाधन की तलाश कर रहे हैं, उसे हटा दिया गया है, उसका नाम बदल दिया गया था, या अस्थायी रूप से अनुपलब्ध है।"
क्रिस्तिपयन

22

NuGet के माध्यम से निर्भरता जोड़ें और एक बिल्ड पैरामीटर सेट करें

लक्ष्य: बिल्ड एजेंटों के लिए कोई परिवर्तन / इंस्टॉल आवश्यक नहीं है

मैंने यहाँ लॉयड द्वारा NuGet दृष्टिकोण के लिए एक हाइब्रिड दृष्टिकोण लिया है , जो एंड्रिक के लिए प्रतिबद्ध बाइनरी निर्भरता समाधान से दूर था

इसका कारण यह है कि मैं नए बिल्ड एजेंटों को जोड़ने में सक्षम होना चाहता हूं ताकि उन्हें इस तरह की वस्तुओं के साथ पूर्व-कॉन्फ़िगर न किया जा सके।

  1. विज़ुअल स्टूडियो के साथ एक मशीन पर, समाधान खोलें; अनदेखा करें कि वेब प्रोजेक्ट विफल हो गया है।
  2. NuGet पैकेज मैनेजर में, MSBuild.Microsoft.VisualStudio.Web.targets जोड़ें , जैसा कि Lydyd ने उल्लेख किया है।
  3. यह बायनेरिज़ को हल करेगा [solution]\packages\MSBuild.Microsoft.VisualStudio.Web.targets.nn.n.n.n\tools\VSToolsPath\
    1. आप इन्हें एक संदर्भ फ़ोल्डर में कॉपी कर सकते हैं और प्रतिबद्ध कर सकते हैं,
    2. या जहां वे हैं वहां उनका उपयोग करें। मैंने इसे चुना, लेकिन मुझे बाद में पथ में संस्करण संख्या से निपटना होगा।

संस्करण 7 में, मैंने निम्नलिखित कार्य किया। यह आवश्यक नहीं हो सकता है, और टिप्पणियों के आधार पर निश्चित रूप से अब आवश्यक नहीं है। कृपया नीचे टिप्पणी देखें।

  1. इसके बाद, अपने टीमसिटी बिल्ड कॉन्फ़िगरेशन में, एक बिल्ड पैरामेंटर जोड़ें env.VSToolsPathऔर इसे VSToolsPath फ़ोल्डर में सेट करें; मैंनें इस्तेमाल किया..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath

8
चरण 4 को करने की आवश्यकता नहीं है, यदि आप अपनी परियोजना फ़ाइल में बस इस के साथ <आयात> तत्व को प्रतिस्थापित करते हैं:<Import Project="..\..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
knocte

यह स्वीकृत उत्तर होना चाहिए ... और बिंदु 4 को हटा दिया जाना चाहिए।
इज़ी

@ इज़ी धन्यवाद, क्या आपने टिप्पणी को संकेत के रूप में किया था बजाय संकेत दिया? मैंने कुछ वर्षों में टीसी का उपयोग नहीं किया है, संस्करण 7 iirc।
डेमन

@ डैमन मैं जेनकिन्स का उपयोग कर रहा हूं और टीसी का नहीं, इसलिए हो सकता है कि मुझे आपके अंतिम बिंदु की आवश्यकता क्यों न हो।
इज़ी

21

बिल्ड / CI सर्वर पर निर्माण करते समय, Microsoft.WebApplication.targetsनिर्दिष्ट करके पूरी तरह से आयात बंद करें /p:VSToolsPath=''। यह अनिवार्य रूप से, निम्न पंक्ति की स्थिति को गलत बना देगा:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />


यह इस तरह से TeamCity में किया जाता है:

यहां छवि विवरण दर्ज करें


यदि आप Visual Studio के "प्रकाशित" तंत्र का उपयोग कर रहे हैं, तो लक्ष्य बनाना आवश्यक है। ऐसा करने से संकलन आगे बढ़ने और पूरा करने की अनुमति देता है, लेकिन, यह अधूरा हो सकता है।
स्टारलॉक

14

यदि आप Visual Studio 2012 से 2013 में माइग्रेट करते हैं, तो * .csproj प्रोजेक्ट फ़ाइल को edior के साथ खोलें।
और 'प्रोजेक्ट' टैग के टूलवर्जन तत्व की जाँच करें।

इसका मान 4.0 से 12.0 तक बदलें

  • से

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" ...
  • सेवा

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="12.0" ...

या यदि आप msbuild के साथ निर्माण करते हैं तो बस VisualStudioVersion गुण निर्दिष्ट करें

msbuild /p:VisualStudioVersion=12.0

समाधान स्रोत


4
TFS 2013 में MSBuild Arguments में /p:VisualStudioVersion=12.0 को जोड़ना (विजुअल स्टूडियो 2013 में निर्मित समाधान के लिए) परिभाषा ने मेरे लिए काम किया। किसी कारण से यह किसी भी पैरामीटर के बिना v11.0 फ़ोल्डर में फ़ाइलों के लिए दिखेगा।
सच्चा के

3
इस समाधान ने मेरे लिए काम किया, मैंने उस कमांड का उपयोग किया:msbuild /p:Platform=x86 /p:VisualStudioVersion=12.0
ई। मायर

9

ऐसा लगता है कि msbuild का नया संस्करण Microsoft.WebApplication.targets के साथ जहाज नहीं करता है। इसे ठीक करने के लिए आपको अपनी csproj फाइल को अपडेट करना होगा:

1) वेब एप csproj (राइट क्लिक) को एडिट करें। बिल्ड टूल से संबंधित नीचे की ओर csproj में सेक्शन ढूंढें। ऐसा दिखना चाहिए।

<PropertyGroup>  
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup>  
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />  
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />  
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />  

2) आपको VisualStudioVersion टैग के नीचे एक VSToolsPath लाइन जोड़ने की आवश्यकता है ताकि ऐसा लगे

<PropertyGroup>  
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
  <!--Add the below line to fix the project loading in VS 2017 -->
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  <!--End -->
</PropertyGroup>  
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />  
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />  
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />  

संदर्भ लिंक: https://alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/


8

यह आप सभी की जरूरत है केवल 103 एमबी। सब कुछ स्थापित मत करो

यहां छवि विवरण दर्ज करें


बिना कुछ भी स्थापित किए मैं उस फॉर्म पर चेकमार्क कैसे लगा सकता हूं ?
क्रिश्चियन

5

मैंने इसे एमएस कनेक्ट पर पाया है :

हाँ, आपको डेटाबेस प्रोजेक्ट्स बनाने के लिए अपनी बिल्ड मशीन पर Visual Studio 2010 स्थापित करना होगा। ऐसा करने के लिए विजुअल स्टूडियो के अतिरिक्त लाइसेंस की आवश्यकता नहीं होती है।

इसलिए, यह एकमात्र विकल्प है जो मेरे पास अभी है।


2
लगता है लिंक टूट गया है।
मोहभंग

2

मेरा समाधान यहाँ कई उत्तरों का मिश्रण है।

मैंने बिल्ड सर्वर की जाँच की, और Windows7 / NET4.0 SDK पहले से ही स्थापित था, इसलिए मुझे रास्ता मिल गया:

C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v9.0 \ WebApplications \ Microsoft.WebApplication.targets`

हालाँकि, इस लाइन पर:

<आयात परियोजना = "$ (MSBuildExtensionsPath) \ Microsoft \ VisualStudio \ v9.0 \ WebApplications \ Microsoft.WebApplication.targets" />

$ (MSBuildExtensionsPath) C: \ Program Files \ MSBuild के लिए फैलता है जिसमें पथ नहीं है।

इसलिए मैंने जो कुछ किया वह इस कमांड का उपयोग करते हुए सिम्बलिन बनाने के लिए था:

mklink / J "C: \ Program Files \ MSBuild \ Microsoft \ VisualStudio" "C: \ Program फ़ाइलें (x86) \ MSBuild \ Microsoft \ VisualStudio"

इस तरह से $ (MSBuildExtensionsPath) एक वैध पथ पर फैलता है, और ऐप में ही कोई बदलाव नहीं करना पड़ता है, केवल बिल्ड सर्वर में (शायद कोई हर बिल्ड को सिमलिंक बना सकता है, यह सुनिश्चित करने के लिए कि यह कदम खो नहीं गया है और "दस्तावेजित" है) ")।


2

मैंने इसे जोड़कर तय
/p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"

किया
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments


2

मैंने समाधान का एक गुच्छा आज़माया, लेकिन अंत में इस उत्तर ने मेरे लिए काम किया: https://stackoverflow.com/a/19826448/431522

यह मूल रूप से MSBuild निर्देशिका से MSBuild को कॉल करने की आवश्यकता है, बजाय Visual Studio निर्देशिका के।

स्क्रिप्ट्स को कोड में आसान बनाने के लिए मैंने अपने रास्ते में MSBuild डायरेक्टरी को भी जोड़ा।


2

विजुअल स्टूडियो 2017 के लिए यहां कोई भी आ रहा है। मेरे पास समान मुद्दा था और 15.6.1 को अद्यतन करने के बाद परियोजना को संकलित नहीं कर सका। मुझे MSBulild टूल इंस्टॉल करना था लेकिन फिर भी त्रुटि थी।

मैं फ़ोल्डर को उसी फ़ोल्डर v14.0से कॉपी करके समस्या को ठीक करने में सक्षम था, जिसने सभी त्रुटियों को हल किया था। तो अब मेरी फ़ोल्डर संरचना नीचे की तरह दिखती है, जहाँ दोनों फ़ोल्डरों में समान सामग्री होती है।C:\Program Files (x86)\MSBuild\Microsoft\VisualStudiov15.0

यहां छवि विवरण दर्ज करें


2

यदि आप MSBuild का उपयोग कर रहे हैं, जैसा कि एक बिल्ड सर्वर के मामले में, मेरे लिए क्या काम है:

निम्नलिखित बदलें:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

सेवा:

<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

मेरा Msbuild कमांड है: *"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" solution.sln /p:Configuration=Debug /p:Platform="Any CPU"*

आशा है कि यह किसी की मदद करता है।


उल्लेख करने के लिए, परिवर्तन आक्रामक .csproj, vbproj फ़ाइलों के लिए किया जाना चाहिए।
कॉलिन Q

0

यदि आप VSTS का उपयोग करके किसी प्रोजेक्ट को परिनियोजित करने का प्रयास कर रहे हैं, तो समस्या "होस्टेड VS2017" (या 18, आदि) के बजाय "होस्टेड विंडोज कंटेनर" विकल्प की जाँच से जुड़ी हो सकती है:

यहां छवि विवरण दर्ज करें


0
  • Microsoft से MSBuild टूल की स्थापना के बाद, MSBuild पथ को पर्यावरण चर में परिभाषित करें, ताकि इसे किसी भी पथ से चलाया जा सके।
  • नोटपैड संपादक जैसे। नोटपैड संपादक में .csproj फ़ाइल को संपादित करें, और टिप्पणी करें
  • निम्नलिखित तत्वों की जाँच करें, ->
    • सुनिश्चित करें कि आप केवल एक बार आयात का उपयोग करते हैं, जो भी काम करता है उसे चुनें।
    • सुनिश्चित करें कि आपके पास ड्राइव पर निम्न फ़ोल्डर मौजूद है, "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0" या जो भी संस्करण MSBuild लक्ष्य द्वारा "C: Program Files" (x86) पर संदर्भित है। \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets "
    • कमांड प्रॉम्प्ट से, जाँच करने के लिए, निम्न कमांड चलाएँ

C:> msbuild "C: \\ DotnetCi.sln" / p: कॉन्फ़िगरेशन = रिलीज़ / पी: UseWPP_CopyWebApplication = true / p: PipelineDependsOnBuild: "false


0

मैं एक CI / CD पाइपलाइन पर SQL सर्वर प्रोजेक्ट का निर्माण कर रहा था। वास्तव में, मैं इसे स्थानीय स्तर पर भी कर रहा था, और मैंने इसे हल करने का प्रबंधन नहीं किया।

मेरे लिए जो काम किया, वह MSBuild SDK का उपयोग कर रहा था .dacpac, जो SQL स्क्रिप्ट के एक सेट से SQL सर्वर डेटा-टीयर एप्लीकेशन पैकेज ( ) बनाने में सक्षम था, जिसका अर्थ है एक नया प्रोजेक्ट बनाना। लेकिन मैं SQL सर्वर प्रोजेक्ट को रखना चाहता था, ताकि मैं इसे विजुअल स्टूडियो पर SQL सर्वर ऑब्जेक्ट एक्सप्लोरर के माध्यम से लाइव डेटाबेस से लिंक कर सकूं। मैंने इसे चलाने और चलाने के लिए निम्नलिखित कदम उठाए:

  1. .sqlडेटाबेस स्क्रिप्ट के साथ मेरी SQL सर्वर परियोजना रखा ।
  2. उपरोक्त लिंक में दिए गए दिशा-निर्देशों के अनुसार, .NET स्टैण्डर्ड 2.0 क्लास लाइब्रेरी प्रोजेक्ट बनाया गया, जो यह सुनिश्चित करता है कि टारगेट फ्रेमवर्क .NET मानक 2.0 था।
  3. .csprojनिम्नानुसार सामग्री सेट करें :

    <?xml version="1.0" encoding="utf-8"?>
    <Project Sdk="MSBuild.Sdk.SqlProj/1.0.0">
      <PropertyGroup>
        <SqlServerVersion>Sql140</SqlServerVersion>
        <TargetFramework>netstandard2.0</TargetFramework>
      </PropertyGroup>
    </Project>
  4. मैंने SQL सर्वर संस्करण के रूप में Sql140 को चुना है क्योंकि मैं SQL सर्वर 2019 का उपयोग कर रहा हूं । आपके द्वारा उपयोग किए जा रहे संस्करण पर मैपिंग का पता लगाने के लिए इस उत्तर की जांच करें ।

  5. बिल्ड पर SQL सर्वर प्रोजेक्ट को अनदेखा करें, ताकि यह स्थानीय रूप से टूटना बंद कर दे (यह विजुअल स्टूडियो पर निर्माण करता है, लेकिन यह वीएस कोड पर विफल रहता है)।

  6. अब हमें बस यह सुनिश्चित करना है कि .sqlफाइल एसडीके प्रोजेक्ट के अंदर हो जब यह बनाया गया हो। मैंने CI / CD पाइपलाइन पर एक साधारण पावरस्लाइड रूटीन के साथ हासिल किया जो SQL सर्वर प्रोजेक्ट से SDK प्रोजेक्ट में फाइल कॉपी करेगा:

कॉपी-आइटम -Path "Path.To.The.Database.Project \ dbo \ Tables \ *" -Destination (नया-आइटम-नाम "dbo \ Tables" -Type Directory -Path "Path.To..DatatSDK.Project" \ ")

पुनश्च: फ़ाइलों को एसडीके परियोजना में भौतिक रूप से होना चाहिए, या तो रूट में या कुछ फ़ोल्डर में, इसलिए .sdkSQL सर्वर प्रोजेक्ट में फ़ाइलों के लिंक काम नहीं करेंगे। सिद्धांत रूप में, इन फ़ाइलों को पूर्व-निर्मित स्थिति के साथ कॉपी करना संभव होना चाहिए, लेकिन कुछ अस्पष्ट कारण से, यह मेरे लिए काम नहीं कर रहा था। मैंने .sqlएसडीके परियोजना पर फाइलें रखने और उन्हें SQL सर्वर परियोजना से जोड़ने का भी प्रयास किया , लेकिन यह आसानी से SQL सर्वर ऑब्जेक्ट एक्सप्लोरर के साथ लिंक को तोड़ देगा, इसलिए मैंने इसे भी छोड़ने का फैसला किया।

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