我们遇到了一个问题,即我们有多个使用通用项目的解决方案,即使它是刚刚构建的,也将重新生成该项目。 FooProject和BarProject都有服务参考(不确定这是否是相关信息)。 MobileProject和SecurityProject没有服务引用。我们看到的问题是,如果打开TestA.sln,将配置更改为Release a build.force
将出现在obj / release文件夹中。
TestA.sln和TestB.sln具有完全相同的4个项目-FooProject,BarProject,MobileProject和SecurityProject(显然是出于测试目的)
以下是我们重现此问题的步骤:
这些复制步骤在VS2015中无效。此问题仅在VS2017中发生。
如果在切换到发行版之后但在构建之前删除了build.force文件,则该项目将不会重新构建。如果您将其保留为启用诊断版本输出,则将看到类似
的消息项目'FooProject'不是最新的。上一个版本包含未保存的文件。
据我所知,build.force文件是通过创建上次构建中未包含的文件来强制构建的一种方法。为什么仅在VS2017中发生这种情况?为什么要假设它完全需要构建?
其他详细信息:
我对上述再现步骤都有解决方法。如果我打开TestA.sln->发布->构建。然后打开TestB.sln->关闭VS 2017->打开TestB.sln->发布->构建。现在,该解决方案将正确不构建任何项目。
我不认为这与循环引用有关。我已清除所有引用,并在没有警告的情况下重新添加了它们。 Build顺序似乎很好,因为它是按照依赖关系顺序进行构建的(只有4个项目,非常容易看到)。