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

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

无法从程序集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专业版。

我在VS 2012中运行了完全相同的解决scheme,没有任何问题。

为了让我的工作,我刚刚复制我的v11.0文件夹,并重新命名为v11.0 ,似乎v11.0起工作良好。 这是现在的快速解决scheme。

因为这可能不是最好的解决scheme,虽然它的工作原理,但我打算尝试安装Windows 7的Microsoft Windows SDK和.NET Framework 4 Windows SDK for Windows 7和.NET Framework 4,但这需要很长时间下载。

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

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

这将dynamic正确地设置正确版本的Visual Studio。

我已经在我们的构build服务器上解决了这个问题好几天了,所以我想我会logging下来的解决scheme。 首先,我的构build服务器安装了Web发布扩展 。 我可以使用TransformXml任务来处理Web应用程序项目中心脏的内容。

为了在Web应用程序项目之外使用它,我尝试将UsingTask元素添加到我的项目中,并使用ms build属性(如Benjamin所示)将其指向正确的位置。 然而,他们不在我的构build服务器(那些可以轻松访问他们的构build服务器的文件系统可能会跳过这一点,只需安装相关的包到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 

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

  <UsingTask TaskName="TransformXml" AssemblyFile="Microsoft.Web.Publishing.Tasks.dll" /> 

现在我可以使用TransformXml任务来从任何项目的心脏的内容。

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

之前:

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

后:

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

正确的答案是卸载正在讨论的项目,然后编辑csproj文件,查找引用10.0path的条目,并将其更改为指向11.0。

要解决这个问题,

  1. 在您的计算机中findVisual Studio安装程序
  2. 点击或点击以启动安装程序,然后select修改。
  3. 在个人组件屏幕上,selectAsp.net和Web开发工具,然后select修改/安装。

这解决了这个问题,因为它创build了上述path中的dll。