为什么使用msbuild构建两个目标与单独构建每个目标不同?

为什么使用msbuild构建两个目标与单独构建每个目标不同?,msbuild,Msbuild,我有一个从Nuget包导入特定目标文件的项目。即使我使用PackageReferences,我也被迫手动导入此文件 (详情见我的其他问题-) 此目标文件将chromedriver.exe注入到内容项目组中,并使用CopyToOutputDirectory=preservedlatest 我观察到这样一种情况:运行msbuild/t时,chromedriver.exe未被复制到bin文件夹:“Restore;Build”,但分别运行两个目标时,msbuild/t:Restore;msbuild/t

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

(详情见我的其他问题-)

此目标文件将
chromedriver.exe
注入到
内容
项目组中,并使用
CopyToOutputDirectory=preservedlatest

我观察到这样一种情况:运行
msbuild/t时,
chromedriver.exe
未被复制到bin文件夹:“Restore;Build”
,但分别运行两个目标时,
msbuild/t:Restore;msbuild/t:Build

有人能解释这是怎么发生的吗


(我一天中的大部分时间都在学习皮肤上的差异,想知道原因吗?

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

要使其生效,需要完全重新评估项目文件,这在同一调用中运行恢复和生成目标时不会发生


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

这非常有意义。因此,我看到的这种行为只是因为恢复目标。如果我采取其他两个目标,那么我就不会看到行为上的任何差异,对吗?是的。只要他们不冲突<代码>-t:清洁;例如,Publish-p:NoBuild=true将不是一个好的组合