TransformXml task fails via msbuild on linux using

2019-04-26 08:55发布

问题:

After following the steps in this answer, when attempting to build a project through mono (Using msbuild), I get the following error:

(AfterCompile target) -> project.csproj(469,5): error MSB4062: The "TransformXml" task could not be loaded from the assembly /usr/lib/mono/xbuild/Microsoft/VisualStudio/v15.0/Web/Microsoft.Web.Publishing.Tasks.dll. 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.

It appears as if Microsoft.Web.Publishing.Tasks.dll is unavailable.

回答1:

On linux via mono, this file doesn't exist. To solve this issue, follow these steps:

  1. Install the nuget package MSBuild.Microsoft.VisualStudio.Web.targets
  2. Right click your project, and click "Unload Project"
  3. Right click your (now unloaded) project, and click "Edit MyProjectName.csproj"
  4. Replace this line:
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />

With your updated nuget Microsoft.Web.Publishing.Tasks.dll location (Update version name in MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3 as necessary):

<UsingTask TaskName="TransformXml" AssemblyFile="..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\Web\Microsoft.Web.Publishing.Tasks.dll" />
  1. Reload your project, and voila, working build on linux!


标签: c# msbuild mono