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 上运行构建!

【讨论】:

这个解决方案是我三年多后的救援,非常感谢! 我必须添加 到 .csproj,因为它还不存在。 这在 OSX 上对我有用,只是我必须从 AssemblyFile 属性中删除初始的 ..\ ,所以 &lt;UsingTask TaskName="TransformXml" AssemblyFile="packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\Web\Microsoft.Web.Publishing.Tasks.dll" /&gt;

以上是关于TransformXml 任务通过使用单声道的 Linux 上的 msbuild 失败的主要内容,如果未能解决你的问题,请参考以下文章

配置转换和“TransformXml 任务失败”错误消息

无法从程序集中加载“SlowCheetah.Xdt.TransformXml”任务

CoreAudio,iOS:无法通过 RemoteIO 使用单声道输入和立体声输出

使用单声道输入和立体声输出设置音频单元 iOS

通过单声道将数组从 C++ 传递给 C#

在 apache 中使用带有 ssl 的单声道