MSBuild 没有在请求的地方放置文件

MSBuild not placing files where requested

所以在使用 TFS 2015 构建定义的 MSbuild 中遇到了一个非常奇怪的问题。

我尝试构建的 Web 应用程序有多个 csprojs,它们在整个应用程序中用作 class 库,当然还有我的实际 Web 应用程序。

下面是我目前正在传递的 MSBuild 参数,以获得完全完成的构建。

/p:UseWPP_CopyWebApplication=True
/p:PipelineDependsOnBuild=False /p:OutDir=C:\Agent\_work\s\Application\Package\bin\
/p:WebProjectOutputDir=C:\Agent\_work\s\Application\Package\WebSite\
/p:NoWarn=0067 
/v:Minimal

我真正想做的是以下内容。

    /p:UseWPP_CopyWebApplication=True
/p:PipelineDependsOnBuild=False /p:OutDir=C:\Agent\_work\s\Application\Package\Website\bin\
/p:WebProjectOutputDir=C:\Agent\_work\s\Application\Package\WebSite\
/p:NoWarn=0067 
/v:Minimal

我 运行 遇到的问题是在第一个程序集被 运行 并放置在 bin 文件夹之后,它然后在主 webproject csproj 上工作并抛出无法定位文件以进行复制消息.

我不明白为什么会这样?是因为 MSBuild 期望 bin 文件夹在 empty/not 那里吗?

我是不是在构建顺序中遗漏了什么,或者需要传递不同的参数。我也必须尝试'outpath'。

在第二个参数中,"OutDir"路径与"WebProjectOutputDir"相同。这是因为 MSBuild 将在 运行“_WPPCopyWebApplication”任务将文件复制到 "WebProjectOutputDir" 文件夹之前清理 "WebProjectOutputDir" 文件夹。这意味着构建期间在 "OutDir" 中生成的文件将被清除,因为它使用与 "WebProjectOutputDir" 相同的路径,因此任务将无法找到要复制的文件。

为避免此问题,您可以将 "OutDir" 更改为 "WebProjectOutputDir" 或再添加一个参数:

/p:CleanWebProjectOutputDir=False