.net “目标”_WPPCopyWebApplication“;项目中不存在

.net “目标”_WPPCopyWebApplication“;项目中不存在,.net,msbuild,msbuild-task,msbuild-4.0,.net,Msbuild,Msbuild Task,Msbuild 4.0,我正在创建一个构建脚本,以自动将我们的web项目发布到测试机 我有一个msbuild脚本,它成功地做到了这一点,但是当它运行时,它会为解决方案中的每个项目生成一个错误,声明“目标”\u WPPCopyWebApplication“在项目中不存在” 这是正确的,因为在我的每个项目文件中,我没有导入包含此函数的相关.targets文件 如果我确实更改了每个项目文件以导入.targets文件,则每个项目都会收到一条警告,说明 MSBuild\Microsoft\VisualStudio\v10.0\W

我正在创建一个构建脚本,以自动将我们的web项目发布到测试机

我有一个msbuild脚本,它成功地做到了这一点,但是当它运行时,它会为解决方案中的每个项目生成一个错误,声明“目标”\u 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"/>

是否有一种方法可以防止出现错误,指出项目文件中不存在“\u 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>


这是我从中获得的:

由于Microsoft.WebApplication.targets已导入Microsoft.Web.Publishing.targets,因此您将收到该错误

WPP是如何工作的

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


您是否尝试将CleanWebProjectOutputDir=False添加到MSBUIld任务属性?实际解决方案是复制“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。。。是的,如果微软在VS Build Tools包中包含更多的东西,而不是强制采用黑客的解决方法,这将是一个理想的选择。2019年,我们仍然需要在构建服务器上安装VS。我同意你的观点,但我不知道这对IIS上的VS发布是否真的有用。无论如何,我有多个问题的目标,我必须复制它们时,涉及到网络,网络应用程序,NuGet,Wix等。Temoving他们都可能会导致问题。