在 VS 2017 的自托管 VSTS-BuildAgent 上构建失败并出现错误 "The TransformWebConfig task could not be loaded[...]"
Building on a Self-hosted VSTS-BuildAgent for VS 2017 fails with error "The TransformWebConfig task could not be loaded[...]"
我们切换到 Visual Studio 2017 年,但我们的自托管构建代理从 VSTS 获取工作时遇到了问题。
一个 VSTS 构建步骤是使用 "Visual Studio Build: Build Solution ***.sln" 使用 "Visual Studio Version: Visual Studio 2017" 构建所有解决方案。
我们所有选择 "ASP.NET Core Web Application (.NET Core)" 项目类型的项目都会出现以下错误。
C:\Program Files (x86)\Microsoft Visual Studio17\Professional\MSBuild\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\TransformTargets\Microsoft.NET.Sdk.Publish.TransformFiles.targets(54,5): error MSB4062: The "TransformWebConfig" task could not be loaded from the assembly C:\Program Files (x86)\Microsoft Visual Studio17\Professional\MSBuild\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0....\tools\net46\Microsoft.NET.Sdk.Publish.Tasks.dll. Could not load file or assembly 'file:///C:\Program Files (x86)\Microsoft Visual Studio17\Professional\MSBuild\Sdks\Microsoft.NET.Sdk.Publish\tools\net46\Microsoft.NET.Sdk.Publish.Tasks.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format. Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.
附加信息:
- 在 Visual Studio 2017 年构建的解决方案没有任何错误。
- None 我们的项目包含任何 .config 转换文件(但确实包含像 web.config 这样的 .config 文件),仍然会出现错误。
- Visual Studio 2017 构建工具以及完整的 Visual Studio 2017 已安装在构建服务器上,例如.NET Core Class 库编译正常。
- 安装的 .NET Core 版本在构建服务器和开发人员计算机之间是相同的。
- 使用 "MsBuild: Build Solution ***.sln" 作为所有解决方案的构建步骤并选择 "MSBuild: MSBuild 15.0" 时也会发生相同的错误。
- 提到的文件 "Could not load file or assembly: C:\Program Files (x86)\Microsoft Visual Studio17\Professional\MSBuild\Sdks\Microsoft.NET.Sdk.Publish\tools\net46\Microsoft.NET.Sdk.Publish.Tasks.dll" 确实存在于提到的路径中。
- .csproj 文件中没有定义任何任务。
有人知道是什么原因造成的吗?
看看这个link。看起来这个问题之前已经解决了
https://github.com/Microsoft/msbuild/issues/1010
但是,最近对 MSBuild 进行了另一项更改(从上面引用)。我的直觉是 'downgrade' 导致 'fix' 被忽略(使用了错误的 DLL 版本)
往下看:
https://github.com/aspnet/websdk/pull/174
我报告了相同的行为,事实证明这只是 64 位版本的 MSBuild 中的一个问题,切换回对我有用的 32 位版本,直到这个问题得到解决。
我们切换到 Visual Studio 2017 年,但我们的自托管构建代理从 VSTS 获取工作时遇到了问题。
一个 VSTS 构建步骤是使用 "Visual Studio Build: Build Solution ***.sln" 使用 "Visual Studio Version: Visual Studio 2017" 构建所有解决方案。
我们所有选择 "ASP.NET Core Web Application (.NET Core)" 项目类型的项目都会出现以下错误。
C:\Program Files (x86)\Microsoft Visual Studio17\Professional\MSBuild\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\TransformTargets\Microsoft.NET.Sdk.Publish.TransformFiles.targets(54,5): error MSB4062: The "TransformWebConfig" task could not be loaded from the assembly C:\Program Files (x86)\Microsoft Visual Studio17\Professional\MSBuild\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0....\tools\net46\Microsoft.NET.Sdk.Publish.Tasks.dll. Could not load file or assembly 'file:///C:\Program Files (x86)\Microsoft Visual Studio17\Professional\MSBuild\Sdks\Microsoft.NET.Sdk.Publish\tools\net46\Microsoft.NET.Sdk.Publish.Tasks.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format. Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.
附加信息:
- 在 Visual Studio 2017 年构建的解决方案没有任何错误。
- None 我们的项目包含任何 .config 转换文件(但确实包含像 web.config 这样的 .config 文件),仍然会出现错误。
- Visual Studio 2017 构建工具以及完整的 Visual Studio 2017 已安装在构建服务器上,例如.NET Core Class 库编译正常。
- 安装的 .NET Core 版本在构建服务器和开发人员计算机之间是相同的。
- 使用 "MsBuild: Build Solution ***.sln" 作为所有解决方案的构建步骤并选择 "MSBuild: MSBuild 15.0" 时也会发生相同的错误。
- 提到的文件 "Could not load file or assembly: C:\Program Files (x86)\Microsoft Visual Studio17\Professional\MSBuild\Sdks\Microsoft.NET.Sdk.Publish\tools\net46\Microsoft.NET.Sdk.Publish.Tasks.dll" 确实存在于提到的路径中。
- .csproj 文件中没有定义任何任务。
有人知道是什么原因造成的吗?
看看这个link。看起来这个问题之前已经解决了
https://github.com/Microsoft/msbuild/issues/1010
但是,最近对 MSBuild 进行了另一项更改(从上面引用)。我的直觉是 'downgrade' 导致 'fix' 被忽略(使用了错误的 DLL 版本)
往下看: https://github.com/aspnet/websdk/pull/174
我报告了相同的行为,事实证明这只是 64 位版本的 MSBuild 中的一个问题,切换回对我有用的 32 位版本,直到这个问题得到解决。