看起来MSVS 11.0 Beta破坏了MSVS 10.0的安装

时间:2012-04-20 13:35:16

标签: c# .net visual-studio-2010 msbuild visual-studio-2012

安装MSVS 11Beta后,我遇到了MSVS 10的编译问题。现在,当我在MSVS 10中编译我的C#项目(在MSVS 10中创建的项目;目标框架:3.5)时,我在输出窗口中出现以下文本的错误MSB4216MSB4028

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:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.0A \ bin \ NetFX 4.0 Tools \ MSBuildTaskHost.exe”存在。
  2. C ++项目正在顺利进行。
  3. 重新安装VS10无法解决问题。
  4. 这是GenerateResource任务,必须编译resx文件,但会生成异常:
  5. <!-- 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.0A”没什么,但只有“7.0A”

8 个答案:

答案 0 :(得分:17)

有一种丑陋的方法可以解决问题:重命名文件夹"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A"。我讨厌接受这个答案。

答案 1 :(得分:8)

您的用户名有多长?

当用户名长度为20个字符时,似乎存在错误。如果您的用户名是19个字符或更少,它可以正常工作。

我在connect上打开了一个问题。

修改 您是否尝试将环境变量DisableOutOfProcTaskHost设置为true,如连接问题中所建议的那样,这对我有用。

答案 2 :(得分:1)

在MSDN论坛上询问了类似的任务。安装VS11后重启了吗?

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

答案 3 :(得分:1)

在安装VS2010然后安装.NET Framework 4.5之后,我的TFS 2010构建服务器上出现了此问题。这允许我构建.NET 4.5项目,但是我试图构建的任何针对CLR2(.NET 2.0 -3.5)的VS2008项目都会返回错误。关于这个问题的少数网站的建议都没有奏效。

  1. 重新启动 - 未解决问题
  2. 在环境变量中以及在项目文件中设置DisableOutOfProcTaskHost = true - 未解决问题
  3. 我的构建帐户的用户名已少于20个字符
  4. 重命名windows SDK文件夹 - N / A,因为我没有安装VS2012和8.0A SDK ......只是.NET framework 4.5。
  5. 在任何情况下,为了解决这个问题,我卸载了.NET 4.5,修复了VS2010,然后重新启动了构建服务器。现在我能够毫无问题地构建VS2008和VS2010项目。

    幸运的是,我不再需要构建.NET 4.5项目,因为该团队决定回到.NET 4.0。

答案 4 :(得分:1)

另一种可能的解决方法是将项目的目标框架更改为.Net 4.0。它并不总是一个解决方案,但如果一切都失败,它肯定是可能的。

答案 5 :(得分:0)

为我工作:删除有问题文件夹的bin和obj文件夹并重新启动解决方案

答案 6 :(得分:0)

就我而言,我在尝试在32位Windows 7计算机上构建解决方案时收到了该错误消息。为我解决错误的方法是右键单击项目,选择属性,然后转到Build选项卡。在这里,我改变了平台目标&#34;来自&#34;任何CPU&#34;到&#34; x86&#34;。 HTH

答案 7 :(得分:0)

在环境变量中设置DisableOutOfProcTaskHost = true设置对我有用。