我们的一个项目有一个import语句,可以引用我们使用的SDK的一些引用。在我们在构建xml中执行构建步骤以复制文件之前,此目标文件不存在。
然而,在我们复制sdk和目标文件之前,我们在项目上执行clean(msbuild)。显然,这会产生加载项目,缓存引用和加载状态的副作用。由于这是在复制目标文件之前发生的,因此目标文件永远不会被加载,因此我的构建最终会失败。
有没有办法在build xml中以编程方式强制完整项目重新加载?如果需要,我可以编写一个解决方法,但如果可能的话,我想避免这种情况。
我正在使用VS 2017.该项目是一个C ++桌面。
答案 0 :(得分:0)
您可以通过传入一组不同的全局属性来强制重新评估项目。如果您正在使用<MSBuild>
任务,请将Properties="Dummy=Value"
添加并归属到其中一个调用。
但是,这仅在目标文件之前不存在且现在存在时才有效,它不会重新加载已更改的目标文件。这就是为什么MSBuild 15.5引入/restore
参数来执行Restore
目标,清除所有缓存,然后使用/t:
参数/项目默认值提供的目标执行另一个构建。