目标“_WPPCopyWebApplication”在项目中不存在。

6
我正在创建一个构建脚本,以自动将我们的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>

以下是我从 这里这里 得到的信息:


你尝试过将MSBuild任务属性CleanWebProjectOutputDir=False添加到项目中吗? - sll
1个回答

5
您之所以收到该错误,是因为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。它定义了一些目标,例如Package和MSDeployPublish,这些目标会调用Web Deploy来完成各种部署任务。

1
实际解决方案是将“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ Web”复制到目标机器。我试图仅使用Visual Studio Build Tools而不安装VS,因此我将其复制到了我已经复制WebApplications文件夹的位置:“\ BuildMachine \ C $ \ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ Web”。 - Siderite Zackwehdex
1
最初的问题是@Aesir在他们的.csproj中不必要地导入了Microsoft.Web.Publishing.targets... 是的,如果微软将许多其他内容包含在VS Build Tools包中而不是强制使用hacky解决方法,那将是理想的。在这里,我们已经到了2019年,仍然需要在构建服务器上安装VS。 - efisher
我同意你的观点,但我不确定这对于在IIS上发布VS是否真正有用。无论如何,我在处理Web、WebApplications、NuGet、Wix等相关目标时遇到了多个问题,必须将它们复制一份。删除它们可能会导致问题。 - Siderite Zackwehdex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接