【问题标题】:The target "_WPPCopyWebApplication" does not exist in the project项目中不存在目标“_WPPCopyWebApplication”
【发布时间】:2011-08-16 09:33:16
【问题描述】:

我正在创建一个构建脚本来自动将我们的 Web 项目发布到测试机器。

我有一个成功执行此操作的 msbuild 脚本,但是当它运行时,它会为解决方案中的每个项目生成一个错误,指出“项目中不存在目标“_WPPCopyWebApplication”。

这是正确的,因为在我的每个项目文件中,我都没有导入包含此函数的相关 .targets 文件。

如果我确实更改了每个项目文件以导入 .targets 文件,那么我会收到每个项目的警告,而不是错误,说明

MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" 无法再次导入。

它已在“MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets (354,3)”中导入。这很可能是构建创作错误。此后续导入将被忽略。

目前我在构建脚本的顶部导入相关的 .targets 文件:

<Project ToolsVersion="4.0"
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<Import Project ="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets"/>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets"/>

有没有办法防止错误指出“_WPPCopyWebApplication”不存在于项目文件中,而不会生成警告指出在我将其添加到每个项目文件后存在重复导入?

如果目标文件是在我的构建脚本顶部导入的,为什么项目需要导入它?

编辑:

我目前正在像这样使用 _WPPCopyWebApplication:

<Target Name="Publish" >
<RemoveDir Directories="$(OutputFolder)" ContinueOnError="true" />
<MSBuild Projects="myproject.csproj;anotherproject.csproj" Targets="ResolveReferences;_WPPCopyWebApplication" Properties="WebProjectOutputDir=$(OutputFolder);OutDir=$(WebProjectOutputDir)\" />
</Target>

我从herehere 得到的:

【问题讨论】:

  • 您是否尝试将 CleanWebProjectOutputDir=False 添加到 MSBUIld 任务属性?

标签: .net msbuild msbuild-task msbuild-4.0


【解决方案1】:

您收到该错误是因为 Microsoft.WebApplication.targets 已导入 Microsoft.Web.Publishing.targets。

http://www.asp.net/web-forms/tutorials/deployment/web-deployment-in-the-enterprise/building-and-packaging-web-application-projects

WPP 如何运作?

Microsoft.WebApplication.targets 文件依次导入 Microsoft.Web.Publishing.targets 文件。 Microsoft.Web.Publishing.targets 文件本质上 WPP。它定义了调用 Web Deploy 来完成各种部署任务的目标,例如 PackageMSDeployPublish

【讨论】:

  • 实际解决方案是将“C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\Web”复制到目标机器。我试图只使用没有安装 VS 的 Visual Studio 构建工具,所以我将它复制到我复制 WebApplications 文件夹的位置:“\\BuildMachine\C$\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\ Microsoft\VisualStudio\v15.0\Web"
  • 最初的问题是@Aesir 在他们的 .csproj 中不必要地导入了 Microsoft.Web.Publishing.targets ...是的,如果 Microsoft 在 VS Build Tools 包中包含更多的东西,那将是理想的而不是强迫 hacky 变通办法。到了 2019 年,我们仍然需要在构建服务器上安装 VS。
  • 我同意你的观点,但我不知道这对于在 IIS 上发布 VS 是否真的有用。无论如何,我的目标有多个问题,当涉及到 Web、WebApplications、NuGet、Wix 等时,我必须复制它们。将它们全部删除可能会导致问题。
猜你喜欢
  • 2011-06-08
  • 2016-04-17
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多