提问人:Dashwall 提问时间:3/11/2016 更新时间:3/14/2016 访问量:842
MSBuild 未将文件放置在请求的位置
MSBuild not placing files where requested
问:
因此,使用 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”。
答:
1赞
Eddie Chen - MSFT
3/14/2016
#1
在第二个参数中,“OutDir”路径与“WebProjectOutputDir”相同。这会导致问题,因为 MSBuild 将在运行将文件复制到“WebProjectOutputDir”文件夹的“_WPPCopyWebApplication”任务之前清理“WebProjectOutputDir”文件夹。这意味着在生成期间在“OutDir”中生成的文件将被清理,因为它与“WebProjectOutputDir”使用相同的路径,因此任务将无法找到要复制的文件。
若要避免此问题,请将“OutDir”更改为“WebProjectOutputDir”,或者再添加一个参数:
/p:CleanWebProjectOutputDir=False
评论