2012-04-20 13 views
12

खराब कर दिया है, मैं एमएसवीएस 11 बीटा स्थापित करने के बाद अपने एमएसवीएस 10 के साथ संकलन समस्याओं में भाग गया। अब, जब मैं MSVS 10 में मेरी सी # परियोजनाओं संकलन (MSVS 10 में बनाया परियोजनाओं, लक्ष्य ढांचा: 3.5), मैं त्रुटियों MSB4216, MSB4028 मिल उत्पादन विंडो में पाठ निम्नलिखित के साथ:ऐसा लगता है कि एमएसवीएस 11.0 बीटा ने एमएसवीएस 10.0 इंस्टॉलेशन

1>Task "GenerateResource" skipped, due to false condition; ('%(EmbeddedResource.Type)' == 'Resx' and '%(EmbeddedResource.GenerateResource)' != 'false' and '$(GenerateResourceMSBuildRuntime)' != 'CLR2') was evaluated as ('Resx' == 'Resx' and '' != 'false' and 'CLR2' != 'CLR2'). 
1>Task "GenerateResource" 
1> Launching task "GenerateResource" from assembly "Microsoft.Build.Tasks.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" in an external task host with a runtime of "CLR2" and a process architecture of "x86". 
1>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2199,5): error MSB4216: Could not run the "GenerateResource" task because we could not create or connect to a task host with runtime "CLR2" and architecture "x86". Please ensure that (1) the requested runtime and/or architecture are available on the machine, and (2) that the required executable "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NetFX 4.0 Tools\MSBuildTaskHost.exe" exists. 
1>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2217,7): error MSB4028: The "GenerateResource" task's outputs could not be retrieved from the "FilesWritten" parameter. Object does not match target type. 
1>Done executing task "GenerateResource" -- FAILED. 

मैं इन त्रुटियों को कैसे ठीक कर सकता ?

संपादित करें:

  1. उल्लेख फ़ाइल "C: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट SDKs \ Windows \ v8.0A \ बिन \ NetFX 4.0 उपकरण \ MSBuildTaskHost.exe" मौजूद है।
  2. सी ++ परियोजनाएं बिना किसी समस्या के शिकायत कर रही हैं।
  3. वीएस 10 को पुनर्स्थापित करने से समस्या हल नहीं होती है।
  4. यह GenerateResource कार्य, कि resx फ़ाइल संकलन चाहिए, लेकिन कोई अपवाद उत्पन्न करता है:

<!-- But we can't use those parameters if we're targeting 3.5, since we're using the 3.5 task -->

<GenerateResource 
    Sources="@(EmbeddedResource)" 
    UseSourcePath="$(UseSourcePath)" 
    References="@(ReferencePath)" 
    AdditionalInputs="$(MSBuildAllProjects)" 
    NeverLockTypeAssemblies="$(GenerateResourceNeverLockTypeAssemblies)" 
    StateFile="$(IntermediateOutputPath)$(MSBuildProjectFile).GenerateResource.Cache" 
    StronglyTypedClassName="%(EmbeddedResource.StronglyTypedClassName)" 
    StronglyTypedFileName="%(EmbeddedResource.StronglyTypedFileName)" 
    StronglyTypedLanguage="%(EmbeddedResource.StronglyTypedLanguage)" 
    StronglyTypedNamespace="%(EmbeddedResource.StronglyTypedNamespace)" 
    StronglyTypedManifestPrefix="%(EmbeddedResource.StronglyTypedManifestPrefix)" 
    PublicClass="%(EmbeddedResource.PublicClass)" 
    OutputResources="@(EmbeddedResource->'$(IntermediateOutputPath)%(ManifestResourceName).resources')" 
    MSBuildRuntime="$(GenerateResourceMSBuildRuntime)" 
    MSBuildArchitecture="$(GenerateResourceMSBuildArchitecture)" 
    Condition="'%(EmbeddedResource.Type)' == 'Resx' and '%(EmbeddedResource.GenerateResource)' != 'false' and '$(GenerateResourceMSBuildRuntime)' == 'CLR2'"> 
  1. मैं debug MSBuild लिपि (.csproj) की कोशिश की। घातक GenerateResource कार्य से पहले मैंने सभी गुण और आइटम की जांच की। "8.0 ए" के बारे में कुछ भी नहीं था, लेकिन केवल "7.0 ए"
+0

क्या आपने जांच की है कि आवश्यक फ़ाइल त्रुटि के अनुसार मौजूद है? "कृपया सुनिश्चित करें कि (1) अनुरोधित रनटाइम और/या आर्किटेक्चर मशीन पर उपलब्ध हैं, और (2) कि आवश्यक निष्पादन योग्य" सी: \ प्रोग्राम फ़ाइलें (x86) \ Microsoft SDKs \ Windows \ v8.0A \ bin \ NetFX 4.0 उपकरण \ MSBuildTaskHost.exe "मौजूद है।" – Chris

+0

@Chris - हाँ यह फ़ाइल मौजूद है, और मैं procmon लॉग में देख सकता हूं, वह ऐप "सी: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट एसडीके \ विंडोज \ v8.0A \ bin \ NetFX 4.0 टूल्स \ MSBuildTaskHost.exe" शुरू हुआ और कुछ कार्य कर रहा था। – Loom

+0

यह एक पथ मुद्दा हो सकता है। वीएस 11 ने एक पथ स्थापित किया है जो आपके निर्माण स्क्रिप्ट को मानने वाले पथ को ओवरराइड कर रहा है और फ़ाइलों या डीएल के गलत संस्करण का उपयोग कर रहा है। अपने पथ की जांच करें। –

उत्तर

17

समस्या को ठीक करने एक बदसूरत तरीका नहीं है। मुझे यह जवाब स्वीकार करने से नफरत है।

+0

इसका नाम क्या है? –

+0

@LuisFilipe - इसे किसी भी अर्थहीन नाम पर पुनर्नामित करें जो कम से कम एक समाधान के लिए पुराने नाम (मैंने "v8.0A" से "_v8.0A") – Loom

+0

+1 नामित नहीं किया। असली जवाब यह ट्रैक करना है कि क्यों MSBuild .NET 4 के लिए इसका उपयोग करने का प्रयास कर रहा है, लेकिन मैं उन सुझावों से बाहर हूं जहां आप देख सकते हैं। समाधान के लिए – Rup

1

एमएसडीएन मंचों पर एक समान खोजी से पूछा गया था। क्या आपने VS11 इंस्टॉल करने के बाद रीबूट किया था? फ़ोल्डर "C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A" का नाम बदलने:

http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/7d955d96-ff73-47d3-8830-85ea321eb4ab

+0

नहीं, मैंने एक महीने पहले VS11 स्थापित किया – Loom

8

आपका उपयोगकर्ता नाम कितना समय है?

ऐसा लगता है कि उपयोगकर्ता नाम 20 वर्ण लंबा होने पर एक बग है। यदि आपका उपयोगकर्ता नाम 1 9 वर्ण या उससे कम है तो यह ठीक काम करता है।

मैंने connect पर कोई समस्या खोली है।

संपादित करें: आप सही करने के लिए वातावरण चर DisableOutOfProcTaskHost स्थापित करने की कोशिश की के रूप में कनेक्ट मुद्दा, वह मेरे लिए काम किया में सुझाव दिया है।

+0

कूल। यह एक तरह का जादू है।लेकिन मेरे उपयोगकर्ता नाम में 13 अक्षर शामिल हैं। – Loom

+0

धन्यवाद। दुर्भाग्य से, मैं 'DisableOutOfProcTaskHost' वर्कअराउंड का परीक्षण नहीं कर सकता, क्योंकि एमएसवीएस 11 बीटा की समयसीमा समाप्त हो गई है और इसे अनइंस्टॉल कर दिया गया है। वर्तमान वीएस 2012 एक्सप्रेस समस्या का पुनरुत्पादन नहीं करता है। – Loom

1

यह समस्या मेरे TFS 2010 बिल्ड सर्वर पर VS2010 स्थापित करने के बाद और फिर .NET Framework 4.5 को स्थापित करने के बाद हुई। इससे मुझे .NET 4.5 प्रोजेक्ट बनाने की इजाजत मिली लेकिन सीएलआर 2 (.NET 2.0 -3.5) को लक्षित करने वाले किसी भी वीएस -2008 प्रोजेक्ट को मैंने त्रुटि का भुगतान करने का प्रयास किया। इस मुद्दे के बारे में बात करने वाली मुट्ठी साइटों पर कोई भी सुझाव काम नहीं करता है।

  1. रीबूट हो रहा है - मुद्दा
  2. एक वातावरण चर में है और यह भी परियोजना फ़ाइल के भीतर स्थापना DisableOutOfProcTaskHost = सच को ठीक नहीं किया था - मुद्दा
  3. अपने निर्माण खाते का नाम पहले से ही कम से कम 20 अक्षरों वाला था ठीक नहीं
  4. विंडोज़ एसडीके फ़ोल्डर का नाम बदलना - एन/ए क्योंकि मेरे पास वीएस2012 और 8.0 ए एसडीके स्थापित नहीं है ... बस .NET Framework 4.5।

किसी भी मामले में, इसे ठीक करने के लिए मैंने .NET 4.5 को अनइंस्टॉल किया, मरम्मत VS2010, और फिर बिल्ड सर्वर को रीबूट किया। अब मैं वीएस -2008 और वीएस -2010 परियोजनाओं को बिना किसी मुद्दे के निर्माण करने में सक्षम हूं।

सौभाग्य से मुझे अब .NET 4.5 प्रोजेक्ट बनाने की आवश्यकता नहीं है क्योंकि टीम ने .NET 4.0 पर वापस जाने का निर्णय लिया है।

1

एक और संभावित फिक्स अपनी परियोजनाओं के लक्ष्य ढांचे को .NET 4.0 में बदलना है। यह हमेशा एक समाधान नहीं है, लेकिन यह निश्चित रूप से एक संभावना है अगर सब कुछ विफल हो जाता है।

0

मेरे लिए काम किया: समस्याग्रस्त फ़ोल्डरों के लिए बिन और obj फ़ोल्डर को हटाने और समाधान को पुन: प्रारंभ

0

मेरे मामले में, मुझे लगता है कि त्रुटि संदेश एक 32-बिट विंडोज 7 मशीन पर एक समाधान का निर्माण करने की कोशिश कर प्राप्त किया। मेरे लिए त्रुटि को हल करने का तरीका प्रोजेक्ट पर राइट-क्लिक करना था, गुण चुनें, फिर बिल्ड टैब पर जाएं। यहां मैंने "किसी भी CPU" से "x86" से "प्लेटफ़ॉर्म लक्ष्य" बदल दिया। एचटीएच

0

एक पर्यावरण चर में DisableOutOfProcTaskHost = true सेटिंग सेट करना मेरे लिए काम करता है।

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

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