20

मैं विजुअल वेब डेवलपर एक्सप्रेस का उपयोग 2010 में एक वेबसाइट को प्रकाशित करने के लिए इच्छुक रहा हूँ, FTP पर एक दूरस्थ सर्वर से पूर्व संकलित निम्नलिखित सेटिंग्स का उपयोग:"मान्य AspnetMergePath नहीं मिला"?

  • तैनात केवल इस आवेदन
  • precompile इस चलाने के लिए आवश्यक फ़ाइलें एप्लिकेशन को प्रकाशित
  • अनुमति दें वेबसाइट updatable
  • कोई डेटाबेस तैनात किया जा रहा है
  • साइट फ़ाइल पदानुक्रम के रूप में तैनात किया जा रहा है हो सकता है, नहीं ज़िप के रूप में पैकेज
  • से पहले

मेरी पहली निर्माण/तैनाती अच्छी तरह से चले गए हैं लग रहा था, लेकिन मेरी दूसरी संकलन के बाद मैं निम्न त्रुटि प्राप्त:

Transformed web.config using C:\path_to_site\Web.Debug.config into obj\Debug\TransformWebConfig\transformed\web.config. 
Copying all files to temporary location below for package/publish: 
obj\Debug\AspnetCompileMerge\Source. 
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.5\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets(132,5): Error : Can't find the valid AspnetMergePath 

और यहाँ Microsoft.Web.Publishing.AspNetConfigurationMerge की सामग्री का एक सबसेट है। लक्ष्य फ़ाइल:

<Target 
     Name="GetAspNetMergePath" 
     DependsOnTargets="$(GetAspNetMergePathDependsOn)" 
     Condition ="'$(GetAspNetMergePath)' != 'false'"> 
    <PropertyGroup> 
     <AspnetMergeName>aspnet_merge.exe</AspnetMergeName> 
     <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath> 
    </PropertyGroup> 
    <Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))" 
      Text="Can't find the valid AspnetMergePath" /> 
    </Target> 

संपादित करें: सेटिंग प्रकाशित बदलने से पहले प्रकाशन सब के बाद समस्या हल नहीं होती सभी मौजूदा फ़ाइलों को हटाना। मुझे लगता है कि इस कारण समस्या अब स्थानीय है।

मेरे web.config में एक AspMergePath टैग प्रतीत नहीं होता है। मुझे पता नहीं है कि मुझे टैग को मैन्युअल रूप से जोड़ना है या नहीं। हालांकि, पथ "obj {प्रकाशन सेटिंग} \ AspnetCompileMerge \ Source" मेरे प्रोजेक्ट में मौजूद है।

और मामले में यह मायने रखती है, मेरे इस परियोजना का नाम "TestProject.NET"

आपकी प्रतिक्रिया की सराहना की है।

+0

क्या आपने अपनी साइट को "फाइल सिस्टम" विधि के माध्यम से प्रकाशित करने का प्रयास किया है? बस परीक्षण के रूप में। – BrOSs

+0

हां। "फाइल सिस्टम" प्रकाशित विधि एक ही समस्या में चलती है। –

+0

आप किसी भी टैग ('AspMergePath'), एक और परीक्षण जोड़ने का अनुमान नहीं लगा रहे हैं। क्या यह ctrl + shift + w के साथ चलता है? – BrOSs

उत्तर

12

आपको जो चाहिए वह aspnet_merge.exe है, जो उपकरण विंडोज एसडीके के हिस्से के रूप में वितरित किया जाता है। इसका उद्देश्य साइटों को प्रीकंपाइल करना है, ताकि आप या तो उस प्रीकंपिलेशन को बंद कर सकें, या Windows SDK के उचित संस्करण को इंस्टॉल कर सकें। डाउनलोड पेजों के लिए अच्छे तैयार लिंक की वजह से विकिपीडिया का संदर्भ है। आपको सब कुछ डाउनलोड करने/इंस्टॉल करने की आवश्यकता नहीं है (यह बहुत बड़ा है), बस वेब इंस्टॉलर डाउनलोड करें और नेट टूल का चयन करें, इसमें लगभग 50 मेगाबाइट लगेंगे।

कृपया ध्यान दें कि विजुअल स्टूडियो 2010 विंडोज एसडीके वर्क के साथ बंडल किया गया है। 7.0 ए अलग डाउनलोड करने के लिए उपलब्ध नहीं है, इसलिए आपको या तो अपने बिल्ड सर्वर पर विजुअल स्टूडियो इंस्टॉल करना होगा, या "Running MSBuild fails to read SDKToolsPath" के उत्तरों में वर्णित कुछ को ट्विक करना होगा।

+0

का उपयोग करके बस ठीक चलती है जानकारी के लिए धन्यवाद! दुर्भाग्य से, मैं इस जवाब की शुद्धता को सत्यापित नहीं कर सकता क्योंकि मैंने तब से परियोजनाओं को बदल दिया है। –

+0

सही उत्तर। आज भी काम करता है। बिल्ड सर्वर पर आपको 2015 एमएसबिल्ड टूल्स और विंडोज 10 एसडीके स्थापित करने की आवश्यकता है। – MoonStom

9

मैंने एक ही समस्या को मारा। सभी माइक्रोसॉफ्ट से संबंधित साइटों के माध्यम से खोजे गए, माइक्रोसॉफ्ट से इसे ठीक करने के लिए बहुत सारी शिकायतें और कोई मंशा नहीं मिली।

यहां मैंने अपने सिस्टम में इसे कैसे काम किया। Microsoft.Web.Publishing.AspNetConfigurationMerge.targets फ़ाइल संपादित करें और निम्न पंक्ति जोड़ें। कृपया सुनिश्चित करें कि माइक्रोसॉफ्ट एसडीके पथ अपने पीसी पर एक ही है, अगर नहीं तो इसे बदल:

<Target 
    Name="GetAspNetMergePath" 
    DependsOnTargets="$(GetAspNetMergePathDependsOn)" 
    Condition ="'$(GetAspNetMergePath)' != 'false'"> 
<PropertyGroup> 
    <TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\</TargetFrameworkSDKToolsDirectory> 
    <AspnetMergeName>aspnet_merge.exe</AspnetMergeName> 
    <AspnetMergePath Condition="Exists('$(TargetFrameworkSDKToolsDirectory)$(AspnetMergeName)')">$(TargetFrameworkSDKToolsDirectory)</AspnetMergePath> 
</PropertyGroup> 
<Error Condition="'$(AspnetMergePath)' == '' Or !Exists($(AspnetMergePath))" 
     Text="Can't find the valid AspnetMergePath" /> 

+0

एक ही समस्या होने के साथ, यह समाधान मेरे लिए अच्छा काम करता है। यहां तक ​​कि अगर मैंने "क्लीनर" को प्राथमिकता दी होगी, तो @tspauld द्वारा प्रस्तावित एक, दुख की बात है, मैं इसे अपने मामले में काम करने में कामयाब नहीं रहा। – PierrOz

+0

यह समाधान मेरे लिए भी काम करता था, लेकिन मुझे नहीं पता कि '' targetFrameworkSDKToolsDirectory> 'लाइन मेरी '। लक्ष्य' फ़ाइल से पूरी तरह गायब क्यों हुई थी। –

11

यहाँ एक है:

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\</TargetFrameworkSDKToolsDirectory> 

यहाँ यह की तरह दिखना चाहिए कैसे है समाधान जो लक्ष्य फ़ाइल को बदलने की आवश्यकता नहीं है।http://connect.microsoft.com/VisualStudio/feedback/details/786492/publish-cant-find-the-valid-aspnetmergepath से कामकाज एमएसबिल्ड को अतिरिक्त उचितताएं पारित करने का सुझाव देता है।

msbuild website.publishproj /p:DeployOnBuild=true /p:PublishProfile=Release /p:VisualStudioVersion=12.0 /p:AspnetMergePath="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\"

कुंजी यहाँ AspnetMergePath संपत्ति है, जो आप अगर विंडोज एसडीके एक अलग स्थान में स्थापित किया गया है बदलना पड़ सकता है है: मैं इस का उपयोग कर काम करने के लिए इसे पाने के लिए कर रहा था। यदि मैं वर्कअराउंड से GetAspNetMergePath संपत्ति शामिल करता हूं तो यह विफल हो जाता है, लेकिन एसडीके संस्करण के आधार पर इसकी आवश्यकता हो सकती है।

+0

अहह .. काम नहीं किया .. विन 8, वीएस 2012 और 2013 स्थापित, संभवतः पथ क्या हो सकता है :( – manishKungwani

+0

मेरे लिए बहुत अच्छा काम किया! धन्यवाद! :) – Natalia

+0

मुझे लगता है कि आपने VisualStudioVersion = 12.0 भी पारित किया है ... आप एक टीएफएस 2012 बिल्ड सर्वर पर वीएस 2013 का उपयोग करने की कोशिश नहीं कर रहा है, है ना? – bwerks

0

मैंने एक ही समस्या को मारा।

माइक्रोसॉफ्ट.Web.Publishing.AspNetConfigurationMerge.targets फ़ाइल संपादित करें और निम्न पंक्ति जोड़ें। व्यवस्थापक अधिकारों के साथ सुनिश्चित संपादक सुनिश्चित करें।

मेरे मामले VS2013 में सही संस्करण विजुअल स्टूडियो दिखता है।

<TargetFrameworkSDKToolsDirectory>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory> 
<TargetFrameworkSDKToolsDirectory>C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\</TargetFrameworkSDKToolsDirectory> 

और यह काम करता! मैं अपनी परियोजना संकलित कर सकता हूं। यह सब सामान के लिए

2

एक वैकल्पिक हल [एसडीके स्थापित करने के लिए आदि होने सहित] निष्क्रिय करने के लिए precompile पर प्रकाशित करें विकल्प है, जो AspNetMerge वर्तमान भले ही आप को निर्दिष्ट नहीं कर रहे हैं जो आप चाहते सामान में मर्ज करने की होने की आवश्यकता है अंतिम आउटपुट

मैं हद तक जा रहा था कि यह कैसे बंद करने, विकल्प संवाद पर poring और मैं था कि यह उम्र के लिए बंद कर दिया पुष्टि करने के लिए केवल महसूस करने के लिए यह बाहर चेकबॉक्स था अनुकूल मैनुअल पढ़ना यह पता लगाने की:

enter image description here

अनचेक करने से पैदावार .pubxml में निम्न परिवर्तन:

- <PrecompileBeforePublish>True</PrecompileBeforePublish> 
- <EnableUpdateable>True</EnableUpdateable> 
- <DebugSymbols>False</DebugSymbols> 
- <WDPMergeOption>DonotMerge</WDPMergeOption> 

कौन सा मेरे लिए काम किया।

एनबी यह के लिए लेकिन महत्वपूर्ण है as covered here दोनों Web और (जो चुपचाप /p:DeployOnBuild अक्रिय के माध्यम से प्रकाशन कर देगा) WebApplications (जो एक संकलक त्रुटि दे देंगे) वर्तमान उप-फ़ोल्डर के तहत %Program Files (x86)%\MSBuild\Microsoft\VisualStudio\v14.0 (विजुअल स्टूडियो संभालने 2015 टूलींग) पैकेज को सफलतापूर्वक जेनरेट करने के लिए प्रकाशन के लिए

संबंधित मुद्दे