TransformXml任务通过使用mono的linux上的msbuild失败

时间:2017-07-14 08:10:45

标签: c# msbuild mono

在执行this answer中的步骤后,尝试通过mono(使用msbuild)构建项目时,出现以下错误:

  

(AfterCompile target) - >     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 个答案:

答案 0 :(得分:13)

在Linux上通过mono,此文件不存在。要解决此问题,请按照下列步骤操作:

  1. 安装nuget软件包MSBuild.Microsoft.VisualStudio.Web.targets
  2. 右键单击您的项目,然后单击“卸载项目”
  3. 右键单击(现已卸载)项目,然后单击“编辑MyProjectName.csproj”
  4. 替换此行:
  5. <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" />
    
    1. 重新加载你的项目,瞧,在linux上构建工作!