因此,正如标题所示,我现在有一个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的修改将不再重建整个解决方案,而只会重建WinForm的。
将BResources.resx
和B添加Resources.Designer.cs
回项目B(但将引用的代码注释掉,以便没有任何资源的使用)将重新引入完整的构建行为。
为了查看我的资源文件是否损坏,我再次删除了它们,然后创建了一个新文件(通过Project Properties-> Resources),并重新添加了与以前相同的资源,它是一个Excel文件。使用此设置,仍将进行完全重建。
然后,我删除了单个资源,但是将资源文件保留在项目B中。即使没有添加资源,但是资源文件仍在项目中,也会发生完全(不需要)重建。
似乎仅将资源文件添加到(.NET 3.5)项目中,将导致Visual Studio 2010始终重建该项目。这是错误还是预期/预期的行为?
再次感谢大家!