因此,正如标题所述,我现在有一个 VS2010 解决方案,其中包含大约 50 个项目。如果我对没有任何引用的“顶级”项目进行更改,那么 VS 仍然会重建所有 50 个项目。我正在运行没有任何附加组件的 Visual Studio 2010 Ultimate。我正在使用 ILMerge 将所有项目合并到一个文件中。
我通过检查较低级别 dll 的时间戳来验证这一点,并看到它们确实被重建,即使它们的代码没有被触及。
我已阅读以下所有回复和评论:
但他们中的大多数只是提供关于卸载项目以加快构建时间的建议,但没有具体的修复方法。我试图弄清楚为什么 VS 认为这些依赖项目需要重建而不需要重建并修复它。
我打开了“工具 > 选项 > 项目和解决方案 > 构建和运行 > 仅构建启动项目和运行依赖项”,但没有任何效果。
此外,如果我只是重建一个只有 8 个(内)直接依赖项的“中级”项目,那么即使没有调用 ILMerge 并且没有修改任何依赖项目,它仍然会构建所有 8 个项目。
感谢大家提供的任何见解。
添加
为了测试一些建议,我从头开始创建了一个新的 WinForms 项目。然后,我在该解决方案中创建了两个新项目。我将我的两个“最低级别”项目中的所有代码和资源(不是项目文件)复制到两个全新的项目中(我通过将文件和文件夹从资源管理器拖放到 Visual Studio 中的项目中来做到这一点)。
最低的项目,我们称之为B,没有引用任何其他项目。下一个项目A仅引用了B。因此,一旦我将所需的 .NET 和外部程序集引用添加到项目中,就会构建解决方案。
然后我有了新的 WinForm 项目参考A并进行了完整构建。所以参考链是:
WinForm -> A -> B
然后我只修改了WinForm 并进行了标准构建 (F6)。和以前一样,Visual Studio 重建了所有三个项目。
在对项目B中的源文件进行一些系统性删除后,我发现如果我删除了我的Resources.Designer.cs
和Resources.resx
(并注释掉了使用.Properties.Resources
这些资源对象的代码),那么对WinForm的修改将不再重建整个解决方案,只会重建赢窗体。
将Resources.resx
and添加Resources.Designer.cs
回项目B(但将引用的代码注释掉,以便没有使用资源)将重新引入完整的构建行为。
为了查看我的资源文件是否已损坏,我再次删除了它们,然后创建了一个新文件(通过项目属性 -> 资源)并重新添加了与以前相同的资源,即单个 Excel 文件。使用此设置,仍然会进行完全重建。
然后我删除了单个资源,但将资源文件留在了项目B中。即使没有添加资源,但资源文件仍在项目中,也会发生完整的(不需要的)重建。
似乎只是将资源文件添加到 (.NET 3.5) 项目将导致 Visual Studio 2010 始终重建该项目。这是错误还是预期/预期的行为?
再次感谢大家!