MSBuild不会将文件放在请求的位置

时间:2016-03-11 07:54:23

标签: msbuild tfs2015 web-project

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

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

Bellow是我目前正在通过的MSBuild参数,以获得完整的构建。

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

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

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

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

我不明白为什么会这样?是因为MSBuild期望bin文件夹为空/不存在吗?

我是否在构建顺序中遗漏了某些内容,或者需要传递不同的Argument。我也要尝试'outpath'。

1 个答案:

答案 0 :(得分:0)

在第二个论点中," OutDir"路径与" WebProjectOutputDir"相同。这导致问题,因为MSBuild将清除" WebProjectOutputDir"运行前的文件夹" _WPPCopyWebApplication"将文件复制到" WebProjectOutputDir"夹。这意味着在" OutDir"中生成的文件在构建期间将被清理,因为它与" WebProjectOutputDir"使用相同的路径,因此任务将找不到要复制的文件。

要避免此问题,您可以更改" OutDir"不同于" WebProjectOutputDir"或者再添加一个参数:

/p:CleanWebProjectOutputDir=False