Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么是build.force文件?当我更改生成配置时,为什么会出现该文件?_C#_Visual Studio 2017 - Fatal编程技术网

C# 什么是build.force文件?当我更改生成配置时,为什么会出现该文件?

C# 什么是build.force文件?当我更改生成配置时,为什么会出现该文件?,c#,visual-studio-2017,C#,Visual Studio 2017,我们遇到了一个问题,即我们有多个使用公共项目的解决方案,这些解决方案将重建项目,即使它刚刚构建。FooProject和BarProject都有服务引用(不确定这是否是相关信息)。MobileProject和SecurityProject没有服务引用。我们看到的问题是,如果打开TestA.sln,将配置更改为发布一个文件build.force,它将出现在obj/Release文件夹中 TestA.sln和TestB.sln有完全相同的4个项目-FooProject、BarProject、Mobil

我们遇到了一个问题,即我们有多个使用公共项目的解决方案,这些解决方案将重建项目,即使它刚刚构建。FooProject和BarProject都有服务引用(不确定这是否是相关信息)。MobileProject和SecurityProject没有服务引用。我们看到的问题是,如果打开TestA.sln,将配置更改为发布一个文件
build.force
,它将出现在obj/Release文件夹中

TestA.sln和TestB.sln有完全相同的4个项目-FooProject、BarProject、MobileProject和SecurityProject(显然用于测试目的)

以下是我们为重现该问题而采取的步骤:

  • 2017年VS中的OpenTesta.sln
  • 切换到释放配置
  • 建造
  • 接近VS
  • 等一两分钟
  • 在VS2017中打开TestB.sln
  • 切换到版本配置(force.build文件显示在FooProject\bin\x86\Release和BarProject\bin\x86\Release中)
  • 建立亲密关系
  • 打开FooProject\bin\x86\Release。请注意,在构建TestB.sln时,FooProject.dll和BarProject.dll是如何重新编译的
  • 这些重新编程步骤在VS2015中无效。此问题仅发生在VS2017年

    如果在切换到发行版后但在生成之前删除build.force文件,则项目将不会重建。如果在启用诊断生成输出的情况下将其保留,您将看到如下消息

    项目“FooProject”不是最新的。上次生成包含未保存的文件

    据我所知,build.force文件是一种通过创建上次生成中未包含的文件来强制生成的方法。为什么这只发生在2017年?为什么它认为它需要建设呢

    其他详细信息:

    我有一个解决上述复制步骤的方法。如果我打开TestA.sln->Release->Build。然后打开TestB.sln->关闭VS2017->打开TestB.sln->发布->构建。现在,解决方案将正确地而不是构建任何项目


    我不认为这与循环引用有关。我已清除所有引用并在没有警告的情况下重新添加它们。构建顺序似乎很好,因为它是按照依赖顺序构建的(只有4个项目,很容易看到)

    在丹麦,有些事情很糟糕,“不及时”的信息是非常不健康的。表示生成顺序问题,项目之间的循环依赖关系很容易意外创建。使用Build>Clean可能会使其永久无法构建。这就是你首先要做的。我不认为这与循环依赖有关。我已清除所有引用并在没有警告的情况下重新添加它们。构建顺序似乎很好,因为它是按照依赖顺序构建的(只有4个项目,很容易看到)。