无法从Microsoft.Web.Publishing.Tasks.dll加载TransformXml任务

all*_*ded 92 visual-studio

有没有人看到这个错误,知道如何解决它?

无法从程序集C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.Tasks.dll加载"TransformXml"任务.

无法加载文件或程序集'file:/// C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.Tasks.dll'或其依赖项之一.该系统找不到指定的文件.

确认声明是否正确,程序集及其所有依赖项是否可用,以及该任务是否包含实现Microsoft.Build.Framework.ITask的公共类.

我在别处读到问题是你没有安装SQL Server.但我确实安装了带有SP1的SQL Express 2012 x64.我也在运行VS 2013 Professional.

我在VS 2012 Express中运行了这个完全相同的解决方案,没有任何问题.

Ben*_*Sch 156

只要您使用Visual Studio 2012,Dai Bok和emalamisura提供的答案就可以正常工作.对于VS 2013,这也失败了.为了使这适用于所有版本的Visual Studio,您应该:

  • 打开项目无法加载的项目文件(.csproj)
  • 搜索 <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
  • 将其更改为 <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.targets" />
  • 重新加载项目

这将动态正确地设置正确的Visual Studio版本.

  • 这让我开始了正确的道路,但我做的改变是<UsingTask TaskName ="TransformXml"...>节点.我的AssemblyFile使用的是错误的版本.只需要在这里更改版本.另一种选择是使用版本宏而不是显式设置版本. (6认同)
  • `$(VisualStudioVersion)`正在返回早期版本:( (5认同)
  • 我喜欢你的解决方案 Benjamin,但我遇到的问题是 v11 文件夹丢失,可能是因为我们有些人在使用 vs2010 并且还没有升级到 vs2012 (2认同)
  • 从VS2015升级到VS2017时完美运行.现在我可以在两个IDE中打开解决方案. (2认同)

Dai*_*Bok 29

为了让我的工作,我只是复制我的v10.0文件夹并重命名为v11.0,从那时起事情似乎很好.这是现在的快速解决方案.

由于这可能不是最好的解决方案,虽然它可行,但我打算尝试安装适用于Windows 7的Microsoft Windows SDK和适用于Windows 7和.NET Framework 4的.NET Framework 4 Windows SDK,但它需要很长时间才能实现.下载.


小智 9

要解决此问题,

  1. 在您的计算机中找到Visual Studio安装程序
  2. 单击或点击以启动安装程序,然后选择“修改”。
  3. 在“单个组件”屏幕中,选择Asp.net和Web开发工具,然后选择“修改/安装”。

这解决了问题,因为它在上述路径中创建了dll。

  • 对于VS2017,我做了`工具→获取工具和功能...→单个组件:Windows 10 SDK(10.0.14393.0)以及ASP.NET和Web开发工具`。这似乎已经解决了问题。 (4认同)
  • 我正在使用VS2017,执行此步骤不会创建那些文件。我认为您选择的其他内容(或与ASP.net和Web开发工具结合使用)可能添加了它。不知道是什么:( (2认同)

bvo*_*elr 8

我已经在我们的构建服务器上打了几天这个问题了,所以我想我会记录下我的解决方案.首先,我的构建服务器安装了Web发布扩展.我可以将TransformXml任务用于Web应用程序项目中的内容.

为了在Web应用程序项目之外使用它,我尝试将UsingTask元素添加到我的项目中,并使用ms构建属性将其指向正确的位置(正如Benjamin演示的那样).但是,它们不在我的构建服务器上(那些可以轻松访问其构建服务器的文件系统的人可能会跳过这个,只需将相关的软件包安装到Visual Studio).我甚至甚至硬编码视觉工作室版本,但它总是丢弃我的错误.

我终于放弃了,从我的本地PC上取下了DLL:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll
Run Code Online (Sandbox Code Playgroud)

我将它们上传到源代码控制并将该文件夹添加到我的构建工作区(编辑构建定义 - >源设置 - >源代码管理文件夹).从那里,我甚至不需要引用文件夹 - 这是我的UsingTask看起来像:

  <UsingTask TaskName="TransformXml" AssemblyFile="Microsoft.Web.Publishing.Tasks.dll" />
Run Code Online (Sandbox Code Playgroud)

现在,我可以将TransformXml任务用于任何项目的内容.

  • [MSBuild.Microsoft.VisualStudio.Web.targets](https://www.nuget.org/packages/MSBuild.Microsoft.VisualStudio.Web.targets/)软件包具有在未安装VS的情况下构建的必要目标.例如:<UsingTask TaskName ="TransformXml"AssemblyFile ="packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath\Web\Microsoft.Web.Publishing.Tasks.dll"/>.有关详细信息,请参阅[this](https://coderwall.com/p/qvrchq/getting-teamcity-to-build-asp-net-mvc-3-web-solutions)博客 (7认同)

vik*_*_78 7

对于 VS2019

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(MSBuildToolsVersion
Run Code Online (Sandbox Code Playgroud)

我替换MSBuildToolsVersionVisualStudioVersion.


Bla*_*ade 5

因为我的VisualStudio文件夹中只有v12.0,v14.0和v15.0,所以我编辑项目文件并将参考路径从v10.0更改为v14.0.然后项目成功构建.

之前:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
Run Code Online (Sandbox Code Playgroud)

后:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
Run Code Online (Sandbox Code Playgroud)