MSBuild 未将文件放置在请求的位置

MSBuild not placing files where requested

提问人:Dashwall 提问时间:3/11/2016 更新时间:3/14/2016 访问量:842

问:

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

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

以下是我目前正在传递的 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 文件夹为空/不存在吗?

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

MSBuild TFS-2015 Web 项目

评论

0赞 James Woolfenden 3/11/2016
如果您不关闭大部分日志记录,如果可以帮助您解决问题,请删除最小,
0赞 Dashwall 3/11/2016
好的,谢谢詹姆斯,我会试一试的。

答:

1赞 Eddie Chen - MSFT 3/14/2016 #1

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

若要避免此问题,请将“OutDir”更改为“WebProjectOutputDir”,或者再添加一个参数:

/p:CleanWebProjectOutputDir=False