TransformXml कार्य Microsoft.Web.Publishing.Tasks.dll से लोड नहीं किया जा सका


95

क्या किसी ने इस त्रुटि को देखा है और इसे ठीक करना जानता है?

"TransformXml" कार्य को असेंबली C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.Tasks.dll से लोड नहीं किया जा सका।

फ़ाइल या असेंबली फ़ाइल लोड नहीं कर सका: /// C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.T मास्क.dll 'या इसकी एक निर्भरता। सिस्टम निर्दिष्ट फाइल का पता लगाने में नाकामयाब रहा।

यह पुष्टि करें कि घोषणा सही है, कि विधानसभा और उसकी सभी निर्भरताएं उपलब्ध हैं, और इस कार्य में एक सार्वजनिक वर्ग शामिल है जो Microsoft को लागू करता है। Build.Framework.ITask।

मैंने कहीं और पढ़ा है कि समस्या तब है जब आपके पास SQL ​​सर्वर स्थापित नहीं है। लेकिन मेरे पास एसक्यूएल एक्सप्रेस 2012 x64 SP1 के साथ स्थापित है। मैं वीएस 2013 प्रोफेशनल भी चला रहा हूं।

मैंने वीएस 2012 एक्सप्रेस में बिना किसी समस्या के इस सटीक समाधान को चलाया है।


1
यह एक नगेट पैकेज होना चाहिए। मुझे अपनी परियोजना के अंदर छिपे हुए संदर्भ पसंद नहीं हैं।
जैदर

आपको बेंजामिन शीशी के उत्तर को सही के रूप में चिह्नित करना चाहिए। यह सबसे अच्छा समाधान प्रतीत होता है
BHuelse

जवाबों:


163

दाई बोक और इमलामिसुरा द्वारा दिए गए उत्तर ठीक काम करते हैं जब तक आप विजुअल स्टूडियो 2012 का उपयोग करते हैं। वीएस 2013 के लिए यह भी विफल रहता है। विज़ुअल स्टूडियो के सभी संस्करणों के साथ यह काम करने के लिए आपको निम्न करना चाहिए:

  • लोड करने में विफल प्रोजेक्ट की प्रोजेक्ट फ़ाइल (.csproj) खोलें
  • निम्न को खोजें <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
  • इसे बदलें <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.targets" />
  • प्रोजेक्ट को फिर से लोड करें

यह Visual Studio के सही संस्करण को गतिशील और उचित रूप से सेट करेगा।


2
मुझे आपका समाधान बेंजामिन पसंद है, लेकिन मुझे जो समस्या आ रही थी, वह यह था कि v11 फोल्डर गायब था, व्यवसायिक रूप से, क्योंकि हमारे पास कुछ लोग हैं जो vs2010 का उपयोग कर रहे हैं और अभी तक vs2012 में अपग्रेड नहीं हुए हैं
दाई बोक

7
यह मुझे सही रास्ते पर शुरू हुआ, लेकिन मैंने जो बदलाव किया वह <UsingTask टास्कनेम = "ट्रांसफॉर्मएक्सएमएल" ... नोड था। मेरी असेंबली फ़ाइल गलत संस्करण का उपयोग कर रही थी। बस यहां संस्करण को बदलने की जरूरत है। एक अन्य विकल्प संस्करण को स्पष्ट रूप से सेट करने के बजाय संस्करण मैक्रो का उपयोग करना होगा।
स्कॉट

5
$(VisualStudioVersion)एक पूर्व संस्करण लौटा रहा है :(
21

1
यह एक पैरामीटर हो सकता है: stackoverflow.com/questions/20002532/…
Jaider

2
VS2015 से VS2017 में अपग्रेड करते समय पूरी तरह से काम करता है। अब मैं दोनों आईडीई में समाधान खोल सकता हूं।
यूरी शकटुला

29

मेरा काम करने के लिए, मैंने अपने v10.0फ़ोल्डर को कॉपी किया और उसका नाम बदल दिया v11.0, और चीजें तब से अच्छी तरह से काम करने लगती हैं। यह अभी के लिए जल्दी ठीक है।

जैसा कि यह शायद सबसे अच्छा समाधान नहीं है, और यद्यपि यह काम करता है, मैं विंडोज 7 और .NET फ्रेमवर्क 4 के लिए माइक्रोसॉफ्ट विंडोज एसडीके को विंडोज 7 और .NET फ्रेमवर्क 4 के लिए स्थापित करने की कोशिश करने जा रहा था , लेकिन इसमें लंबा समय लग रहा है डाउनलोड।


1
मैंने v10.0 में 'वेब' फ़ोल्डर नहीं देखा। इसलिए मैंने इसे v12.0 फ़ोल्डर से v11.0 फ़ोल्डर में कॉपी किया।
सुंदरदीप

9

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

वेब एप्लिकेशन प्रोजेक्ट के बाहर इसका उपयोग करने के लिए , मैंने अपने प्रोजेक्ट में UsingTask तत्व को जोड़ने और एमएस बिल्ड संपत्तियों (बेंजामिन के रूप में प्रदर्शित) का उपयोग करके इसे सही जगह पर इंगित करने का प्रयास किया। हालाँकि, वे मेरे बिल्ड सर्वर पर नहीं थे (वे अपने बिल्ड सर्वर के फ़ाइल सिस्टम तक आसान पहुँच के साथ शायद इसे छोड़ सकते हैं और विजुअल स्टूडियो के लिए प्रासंगिक पैकेज स्थापित कर सकते हैं)। मैं यहां तक ​​कि हार्ड कोड विज़ुअल स्टूडियो संस्करणों में भी गया, लेकिन इसने मुझ पर हमेशा यह त्रुटि छोड़ी।

मैंने आखिरकार हार मान ली, अपने स्थानीय पीसी से DLL खींच लिया:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll

मैंने उन्हें स्रोत नियंत्रण में अपलोड किया और उस फ़ोल्डर को मेरे बिल्ड के कार्यक्षेत्र में जोड़ा (बिल्ड बिल्ड परिभाषा -> स्रोत सेटिंग्स -> स्रोत नियंत्रण फ़ोल्डर)। वहाँ से, मुझे फ़ोल्डर को संदर्भित करने की आवश्यकता नहीं है - यहाँ मेरा UseTask कैसा दिखता है:

  <UsingTask TaskName="TransformXml" AssemblyFile="Microsoft.Web.Publishing.Tasks.dll" />

अब मैं किसी भी प्रोजेक्ट से अपने दिल की सामग्री को ट्रांसफॉर्मएक्सएमएल कार्य का उपयोग कर सकता हूं।


9
MSBuild.Microsoft.VisualStudio.Web.targets पैकेज के बिना वी.एस. स्थापित निर्माण करने के लिए आवश्यक लक्ष्य है। उदाहरण के लिए: <UsingTask TaskName = "TransformXml" AssemblyFile = "package \ MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1.1 \ tools \ VSToolsPath \ Web's Microsoft.Web.Publishing.T मास्क.dll" />। देखें इस अधिक जानकारी के लिए ब्लॉग
moonpatrol

1
अरे @moonpatrol, आपको इसे एक उत्तर देना चाहिए, क्योंकि मैं इस तरह से पसंद करता हूं - पैकेज स्थापित करना और फिर इसे संदर्भित करना - बिल्कुल सार्वभौमिक समाधान :-) मैंने इसे बस कोशिश की, और पूरी तरह से काम करता है। वैसे भी धन्यवाद! यदि आप इसका जवाब देते हैं, तो सिर्फ मुझे पिंग करें और मैं वोट दूंगा।
टेंगिज

9

समस्या को ठीक करने के लिए,

  1. अपने कंप्यूटर में विज़ुअल स्टूडियो इंस्टॉलर खोजें
  2. इंस्टॉलर को शुरू करने के लिए क्लिक करें या टैप करें और फिर संशोधित करें का चयन करें।
  3. इंडिविजुअल कंपोनेंट्स स्क्रीन से, Asp.net और वेब डेवलपमेंट टूल्स का चयन करें और फिर मॉडिफाई / इनस्टॉल सेलेक्ट करें।

इसने समस्या को हल कर दिया क्योंकि यह उल्लिखित पथ में dll बनाता है।


2
मैं VS2017 का उपयोग कर रहा हूं और इस चरण को निष्पादित करने से उन फ़ाइलों का निर्माण नहीं होता है। मुझे लगता है कि आपके द्वारा चुने गए कुछ और (या ASP.net और वेब डेवलपमेंट टूल्स के संयोजन में) जिसने इसे जोड़ा। हालांकि यह निश्चित नहीं है कि :(
क्रिस

मैंने वही चुना है। वेब से संबंधित घटकों को चुनने और स्थापित करने का प्रयास करें। गुड लक हालांकि।
विनोदिनी रामासामी

मैंने अभी-अभी पूरे वेब वर्कफ़्लो की कोशिश की है और अभी भी उन फ़ाइलों को नहीं है। मुझे ऐसा लगता है कि यह समाधान इतना करीब है। काश इसे पिन किया जा सकता है क्योंकि मेरे पास घटकों को स्थापित करने के लिए मेरे एचडीडी पर सीमित स्थान है
रॉबर्ट स्नाइडर

4
VS2017 के लिए, मैंने किया Tools → Get Tools and Features... → Individual Components: Windows 10 SDK (10.0.14393.0) and ASP.NET and web development tools । ऐसा लगता है कि चाल चली गई है।
जॉन जोन्स

5

क्योंकि मेरे VisualStudio फ़ोल्डर में केवल v12.0, v14.0 और v15.0 हैं, मैं अपनी परियोजना फ़ाइल को संपादित करता हूं और v10.0 से v14.0 तक संदर्भ पथ को बदलता हूं। तब प्रोजेक्ट सफलतापूर्वक बनाता है।

इससे पहले:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />

उपरांत:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll" />

5

VS2019 के लिए

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(MSBuildToolsVersion

मैंने MSBuildToolsVersionसाथ दिया VisualStudioVersion


इस दस्तावेज़ "द्वारा docs.microsoft.com/visualstudio/msbuild/... " परिवर्तन MSBuildToolsVersion साथ VisualStudioVersion तो मैं "है कि propety इस तरह अच्छी तरह से काम कर रहे बदलने $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) "
किम की वोन

2

इसका सही उत्तर प्रश्न में परियोजना को उतारना है और फिर csproj फ़ाइल को संपादित करना है, एक प्रविष्टि की तलाश करें जहां वे 10.0 पथ का संदर्भ दे रहे हैं और इसे बदले में 11.0 पर इंगित करें।


इसके लिए + 1। जब मैंने अपने कार्य स्थान फ़ोल्डर को एक देव मशीन से दूसरे में कॉपी किया तो मुझे यह समस्या हुई। दूसरी देव मशीन में v11 स्थापित था, न कि v10। इस प्रकार, v10 फ़ोल्डर खाली था।
Maplemale

1

इसे काम करने के लिए आपको दो चीजों की आवश्यकता है:

1) अपने स्टूडियो सर्वर पर चयनित "वेब डेवलपमेंट बिल्ड टूल्स" विकल्प के साथ विजुअल स्टूडियो बिल्ड टूल्स स्थापित करें (आपको पूरे विजुअल स्टूडियो की जरूरत नहीं है, केवल वी.एस. बिल्ड टूल्स)। https://www.visualstudio.com/pl/thank -आप-डाउनलोड विजुअल स्टूडियो /? sku = BuildTools और rel = 15

2) उस रास्ते को सुनिश्चित करें कि Microsoft.eb.Publishing.Tasks.dll सही हो

  <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(MSBuildToolsVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />

1

मेरे लिए यह सिर्फ NuGet पैकेज MSBuild.Microsoft.VisualStudio.Web.targets v14.0.0.3 के संदर्भ को जोड़कर काम करना शुरू किया

यहां तक ​​कि यह प्रोजेक्ट लेखक द्वारा UseTask तत्व को प्रोजेक्ट फ़ाइल में जोड़ने की आवश्यकता नहीं है

https://github.com/pdonald/nuget-webtargets

बस NuGet पैकेज स्थापित करें। उपकरण फ़ोल्डर में लक्ष्य फ़ाइल का उपयोग करने के लिए पैकेज स्वचालित रूप से $ (VSToolsPath) संपत्ति सेट करता है।

और फिर मैं ट्रांसफॉर्मएक्सएमएल और अन्य कार्यों का उपयोग करने में सक्षम था, उदाहरण के लिए, पैकेज में परिभाषित किया गया था

  <Target Name="app_config_AfterCompile" AfterTargets="AfterCompile" Condition="Exists('app.$(Configuration).config')">
    <!--Generate transformed app config in the intermediate directory-->
    <TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
    <!--Force build process to use the transformed configuration file from now on.-->
    <ItemGroup>
      <AppConfigWithTargetPath Remove="App.config" />
      <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
        <TargetPath>$(TargetFileName).config</TargetPath>
      </AppConfigWithTargetPath>
    </ItemGroup>
  </Target>

0

बस अगर कोई एसडीके-शैली के csproj का उपयोग कर रहा है, तो आप बिल्ड सर्वर पर Visual Studio स्थापित किए बिना इसे प्राप्त कर सकते हैं।

  1. सबसे पहले आपको अपने प्रोजेक्ट में SlowCheetah nuget पैकेज स्थापित करना चाहिए । एक बार जब आप इसे स्थापित करते हैं, तो आप अपने एसडीके-शैली परियोजना में निम्नलिखित देखेंगे।

    <PackageReference Include="Microsoft.VisualStudio.SlowCheetah" Version="3.2.20">
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
    
  2. फिर सुनिश्चित करें कि आप GeneratePathProperty = "true" विशेषता जोड़ें (नीचे देखें)। यह अगले भाग के लिए बहुत महत्वपूर्ण है क्योंकि यह आपको उस रास्ते को हथियाने में मदद करेगा जहाँ आपकी मशीन पर नगेट पैकेज को बहाल किया गया है। जॉर्ज डांगल ने अपने लेख में इसे यहां समझाया है

    <PackageReference Include="Microsoft.VisualStudio.SlowCheetah" Version="3.2.20" GeneratePathProperty="true">
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
    
  3. अपनी परियोजना में SlowCheetah लक्ष्यों को आयात करें:

    <Import Project="$(PkgMicrosoft_VisualStudio_SlowCheetah)\build\Microsoft.VisualStudio.SlowCheetah.targets" />
    
  4. अब आप कुछ कस्टम परिवर्तनों को लागू करने के लिए लक्ष्य कमांड (प्रकाशित होने के बाद इस मामले में) का उपयोग कर सकते हैं। यदि आपको आवश्यकता है, तो आप हमेशा नीचे दिए गए उदाहरण में चर का उपयोग करने के बजाय नीचे दिए गए फ़ाइल नामों को हार्ड-कोड कर सकते हैं।

    <Target Name="AfterPublishs" AfterTargets="Publish">
         <TransformTask Source="Web.config" Transform="Web.$(Configuration).MyCustomTransformFile.config" Destination="$(PublishDir)\Web.config" />
    </Target>
    

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

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