0

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

我正在尝试构建的 Web 应用程序有多个 csprojs,它们在整个应用程序中用作类库,当然还有我实际的 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”。

4

1 回答 1

1

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

为避免此问题,您可以将“OutDir”更改为与“WebProjectOutputDir”不同的值,或者再添加一个参数:

/p:CleanWebProjectOutputDir=False
于 2016-03-14T08:29:24.267 回答