Szy*_*iak 0 .net msbuild visual-studio
我在运行 gulp 任务以转换我的配置文件时遇到问题。它报告以下错误:
error MSB4062: The "TransformXml" task could not be loaded from the assembly C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0\Web\Microsof t.Web.Publishing.Tasks.dll. Could not load file or assembly 'Microsoft.Build.Utilities.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Confi rm that the <UsingTask> 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.
Run Code Online (Sandbox Code Playgroud)
任务的作用:
_msbuild.proj
包含要转换的配置文件的文件。文件看起来是这样的(显然 Source、Transform 和 Destination 都是用真实数据填充的):<Project ToolsVersion="4.0" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="TransformXml" AssemblyFile="C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
<Target Name="Transform">
<TransformXml Source="" Transform="" Destination=""/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\msbuild.exe .\_msbuild.proj /t:Transform
我已经看到了这个答案,它表明它是一个 nuget 包并且可能已损坏。我不认为是这种情况,因为我项目中的其他人都没有这个问题。此外,我确实有有问题的 dll -Microsoft.Build.Utilities.Core
但是在安装 dotnet 和 VS 的各个地方安装了更高版本(16.4.0)。
我看到的唯一区别是我使用的是 VS 2019 并且Microsoft.Web.Publishing.Tasks.dll
在磁盘上的不同位置(一个包含 TransformXml taks 并依赖于缺少的库的库)与 gulp 转换模块中的位置不同 - 我有它,C:\Program Files (x86)\Microsoft Visual Studio
而其他人有它在C:\Program Files (x86)\MSBuild
我现在被这个问题困了将近一天,动弹不得。
无法加载程序集 Microsoft.Build.Utilities.Core Version=15.1.0.0
我认为问题在于您使用的msbuild.exe
是 Framework 版本而不是 VS2019 的 msbuild。
并且 C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\msbuild.exe .\_msbuild.proj /t:Transform
意味着您使用Framework 的msbuild。
为了更详细地解释它:
VS2019的MSBuild集成了多种vs环境参数,直接关系到你在vs中的各种操作,而框架的msbuild只有最基本的编译工程功能,没有TransformXml
task。
此外,Microsoft.Web.Publishing.Tasks.dll
只是VS2019的msbuild的一部分,所以它可以被VS2019的msbuild识别。但是这个dll不在C:\Windows\Microsoft.NET\Framework64\v4.0.30319\xxxx
.m下,所以用Framework的msbuild不能得到你想要的
解决方案
作为解决方法,您应该使用 VS2019 的 MSBuild 来对应Microsoft.Web.Publishing.Tasks.dll
其文件夹中存在的内容。
1)用于 C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\MSBuild.exe
执行_msbuild.proj
.
2)或者只是使用开发人员命令提示符
而且我认为其他人也使用过这个 msbuild。
希望能帮到你。
归档时间: |
|
查看次数: |
2778 次 |
最近记录: |