TransformXml 任务通过使用单声道的 Linux 上的 msbuild 失败
Posted
技术标签:
【中文标题】TransformXml 任务通过使用单声道的 Linux 上的 msbuild 失败【英文标题】:TransformXml task fails via msbuild on linux using mono 【发布时间】:2017-12-19 06:12:02 【问题描述】:按照this answer中的步骤操作后,尝试通过mono(使用msbuild)构建项目时,出现以下错误:
(编译后目标)-> project.csproj(469,5):错误 MSB4062:无法从程序集 /usr/lib/mono/xbuild/Microsoft/VisualStudio/v15.0/Web/Microsoft.Web.Publishing.Tasks 加载“TransformXml”任务.dll。确认声明正确,程序集及其所有依赖项都可用,并且任务包含实现 Microsoft.Build.Framework.ITask 的公共类。
似乎Microsoft.Web.Publishing.Tasks.dll
不可用。
【问题讨论】:
【参考方案1】:在通过 mono 的 linux 上,此文件不存在。要解决此问题,请按以下步骤操作:
-
安装 nuget 包 MSBuild.Microsoft.VisualStudio.Web.targets
右键单击您的项目,然后单击“卸载项目”
右键单击您的(现在已卸载)项目,然后单击“编辑 MyProjectName.csproj”
替换此行:
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
使用您更新的 nuget Microsoft.Web.Publishing.Tasks.dll
位置(根据需要更新 MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3
中的版本名称):
<UsingTask TaskName="TransformXml" AssemblyFile="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\Web\Microsoft.Web.Publishing.Tasks.dll" />
-
重新加载您的项目,瞧,在 linux 上运行构建!
【讨论】:
这个解决方案是我三年多后的救援,非常感谢! 我必须添加AssemblyFile
属性中删除初始的 ..\
,所以 <UsingTask TaskName="TransformXml" AssemblyFile="packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\Web\Microsoft.Web.Publishing.Tasks.dll" />
以上是关于TransformXml 任务通过使用单声道的 Linux 上的 msbuild 失败的主要内容,如果未能解决你的问题,请参考以下文章
无法从程序集中加载“SlowCheetah.Xdt.TransformXml”任务