Msbuild失败,错误为msb4064和msb4063

时间:2012-09-11 21:16:35

标签: .net-4.0 msbuild .net-4.5

使用.NET 4.5安装Visual Studio 2012后,在使用msbuild构建时,我开始遇到以下错误:

  • 错误MSB4064:
  

“GenerateResource”任务不支持“SdkToolsPath”参数。验证该任务上是否存在该参数,它是一个可设置的公共实例属性。

  • 错误MSB4063:
  

无法使用其输入参数初始化“GenerateResource”任务。   项目文件标题如下:

    <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">

有任何想法在.NET 4.5中做了哪些更改可能会导致abover错误?

4 个答案:

答案 0 :(得分:4)

这是C:\ Windows \ Microsoft.Net \ v4.0.30319中的Microsoft.Common.targets文件的问题。安装Visual Studio 2012后,此文件已更改。其中一项更改是在有人将其计算机升级到Windows 8的情况下“修复”GenerateResourceMSBuildRuntime(有关详细信息,请阅读第2271行的精细评论)。我的修复只是注释掉Microsoft.Common.targets文件中的以下行

<GenerateResourceMSBuildRuntime 
     Condition="'$(GenerateResourceMSBuildRuntime)' == '' and 
                 $([MSBuild]::DoesTaskHostExist(`$(TargetFrameworkAsMSBuildRuntime)`, `$(GenerateResourceMSBuildArchitecture)`))">$(TargetFrameworkAsMSBuildRuntime)</GenerateResourceMSBuildRuntime>

答案 1 :(得分:1)

如果您执行了Bernard建议的变通方法(If your build fails with “MSB6002: The command-line for the “ResGen” task is too long”),那么实际上是一个更好的解决方案。是完全从项目文件中删除变通方法。 Microsoft实际上已经使用Visual Studio 2012 SDK工具修复了对此变通方法的需求。

有关此问题,请参阅discussion on connect

答案 2 :(得分:0)

我遇到了同样的问题,并发现我在其中一个项目中使用hack来处理大量资源文件(If your build fails with “MSB6002: The command-line for the “ResGen” task is too long”)。

删除任务版本3.5(GenerateResource Task)不支持的所有属性后,我的版本再次正常运行。

答案 3 :(得分:0)

我最近偶然发现了这个问题,解决方法是关闭并重新打开 Visual Studio。我正在 Visual Studio Enterprise 2019 16.10.2 中使用 dotnetcore 2.1 开发一些 azure 功能