使用 MSBuild 2015 的 AspNetMerge 任务

AspNetMerge Task using MSBuild 2015

我正在将 Visual Studio 2010 年的项目迁移到使用较新的 2015 工具,但不知道如何解决这个问题。

在安装了 Visual Studio 2015 的新构建代理上通过 TeamCity 构建期间,出现以下错误:

error MSB4062: The "Microsoft.WebDeployment.Tasks.AspNetMerge" task could not be loaded from the assembly C:\Program Files (x86)\MSBuild\Microsoft\WebDeployment\v10.0\Microsoft.WebDeployment.Tasks.dll. Could not load file or assembly 'file:///C:\Program Files (x86)\MSBuild\Microsoft\WebDeployment\v10.0\Microsoft.WebDeployment.Tasks.dll' or one of its dependencies. The system cannot find the file specified. 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.

有问题的程序集在构建的 .proj 文件中作为任务被引用:

<UsingTask TaskName="Microsoft.WebDeployment.Tasks.AspNetMerge" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\WebDeployment\v10.0\Microsoft.WebDeployment.Tasks.dll"/>

现在鉴于这些路径中的版本号是 v10.0,我认为它仍在引用旧工具。问题是在新工具中 Microsoft.WebDeployment.Tasks.dll 不再存在。

谁能告诉我我需要在我的 MSBuild 项目中引用什么新程序集才能在新工具中执行 aspnet_merge 步骤?有没有更好的方法?

提前致谢!

Microsoft.WebDeployment.targets 和 Microsoft.WebDeployment.Tasks.dll 包含在 Web Deployment Projects package. More information: you can refer to this 篇文章中。

对于Visual Studio2015,您不需要创建web部署项目,您可以创建一个发布配置文件并配置预编译。

  1. 右键单击您的 Web 项目=>发布
  2. 点击自定义创建新的发布配置文件
  3. 在设置部分,勾选发布时预编译选项,点击配置进行配置

我最终通过将 AspNetMerge 任务在 .proj 文件中使用的程序集更改为以下程序集来完成此工作:

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

AspNetMerge 任务现在是 Microsoft.Web.Publishing.Tasks.dll 的一部分。