14

安装 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 文件,但会生成异常:

<!-- 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. 我尝试调试MSBuild 脚本 ( .csproj)。就在致命GenerateResource任务之前,我检查了所有属性项目。没有“8.0A”,只有“7.0A”
4

8 回答 8

17

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

于 2012-05-10T16:15:06.100 回答
8

你的用户名有多长?

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

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

编辑:DisableOutOfProcTaskHost您是否尝试按照连接问题中的建议 将环境变量设置为 true,这对我有用。

于 2012-08-20T16:17:58.317 回答
1

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

于 2013-03-27T13:06:03.477 回答
1

在 MSDN 论坛上提出了类似的问题。安装VS11后重启了吗?

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

于 2012-04-20T14:35:57.597 回答
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 文件夹 - 不适用,因为我没有安装 VS2012 和 8.0A SDK...只是 .NET 框架 4.5。

无论如何,为了解决这个问题,我卸载了 .NET 4.5,修复了 VS2010,然后重新启动了构建服务器。现在我可以毫无问题地构建 VS2008 和 VS2010 项目。

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

于 2013-02-05T17:15:54.917 回答
0

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

于 2015-04-14T14:09:58.470 回答
0

就我而言,我在尝试在 32 位 Windows 7 机器上构建解决方案时收到了该错误消息。为我解决错误的方法是右键单击项目,选择属性,然后转到构建选项卡。在这里,我将“平台目标”从“任何 CPU”更改为“x86”。高温高压

于 2014-08-20T21:20:44.250 回答
0

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

于 2014-07-29T15:43:16.293 回答