我有一个从Nuget包导入特定目标文件的项目。即使我使用PackageReferences,也必须手动导入此文件。
(有关详细信息,请参见我的其他问题-How are we supposed to execute package build targets in the new world where nuget packages are consumed through msbuild PackageReference?)
此目标文件将chromedriver.exe
和Content
注入到CopyToOutputDirectory = PreserveNewest
项目组中。
我观察到一种情况,运行chromedriver.exe
时msbuild /t:"Restore;Build"
未被复制到bin文件夹,但是运行两者时被复制分别定位-msbuild /t:Restore; msbuild /t:Build
。
谁能解释这是怎么发生的?
(一天中的大部分时间我都在学习皮肤的差异,因此想知道为什么会杀死?)
答案 0 :(得分:1)
还原会更改obj\
目录中导入的项目文件。
要使此方法生效,需要完全重新评估项目文件,而在同一调用中运行Restore和Build目标时不会发生这种情况。
使用-restore
命令行开关让MSBuild在同一命令行调用中的其他指定目标之前运行还原。当运行请求的版本时,MSBuild将运行还原,清空其XML缓存并再次重新评估项目。