为什么使用msbuild构建两个目标不同于分别构建每个目标?

时间:2018-12-07 23:01:16

标签: msbuild

我有一个从Nuget包导入特定目标文件的项目。即使我使用PackageReferences,也必须手动导入此文件。

(有关详细信息,请参见我的其他问题-How are we supposed to execute package build targets in the new world where nuget packages are consumed through msbuild PackageReference?

此目标文件将chromedriver.exeContent注入到CopyToOutputDirectory = PreserveNewest项目组中。

我观察到一种情况,运行chromedriver.exemsbuild /t:"Restore;Build" 未被复制到bin文件夹,但是运行两者时被复制分别定位-msbuild /t:Restore; msbuild /t:Build

谁能解释这是怎么发生的?

(一天中的大部分时间我都在学习皮肤的差异,因此想知道为什么会杀死?)

1 个答案:

答案 0 :(得分:1)

还原会更改obj\目录中导入的项目文件。

要使此方法生效,需要完全重新评估项目文件,而在同一调用中运行Restore和Build目标时不会发生这种情况。

使用-restore命令行开关让MSBuild在同一命令行调用中的其他指定目标之前运行还原。当运行请求的版本时,MSBuild将运行还原,清空其XML缓存并再次重新评估项目。