CSharp - C# Visual Studio 重新生成未经修改的项目

  显示原文与译文双语对照的内容
142 0

因此,就像标题所示,我现在有一个包含 ~50 项目的VS2010解决方案。如果我对"顶层"项目做了更改,但没有引用,vs 仍然会重新生成 50个项目。我正在运行 Visual Studio 2010,但没有任何 add-ons 。我使用ILMerge将所有项目合并到一个文件中。

我通过检查低级dll的时间戳验证了这一点,即使它们的代码没有被触发也是如这里。

我已经阅读了所有的回复和评论:

Visual Studio 2008继续重建

Visual Studio 一直生成所有内容。

奇怪的VS2010构建出现在我的解决方案中。

的原因,C# 项目在 Visual Studio 重建

但是大多数人只提供关于卸载项目的建议,以加快构建时间,但无需修复。我正在试图找出为什么 vs 认为这些依赖项目需要重新构建,而不需要修复它。

我已经打开'工具> 选项> 项目和解决方案> 生成和运行> 仅生成启动项目和运行时依赖项',但没有效果。

同样,如果只重建一个只有1 个( in ) 直接依赖项的项目,那么即使没有调用ILMerge并且依赖项目已经修改,仍然会生成所有 8个项目。

感谢大家对你可能提供的任何见解。

为了测试一些建议,我从头开始创建了一个新的WinForms项目。然后我在这个解决方案中创建了两个新项目。我将所有的代码和资源( 不是项目文件) 从两个'最低级别'项目复制到两个新的项目( 我通过将资源管理器中的文件和文件夹拖放到 Visual Studio 中的项目来做到这一点) 。

低项目,我们称它为 B,没有引用任何其他项目。下一个项目的收费为,仅引用英镑 因此,一旦我向项目中添加了必需的.NET 和外部程序集引用,那么解决方案就会生成。

然后我让我的新WinForm项目参考了 ,并做了完整的构建。因此,ref链是:

WinForm -> 英镑英镑

然后我修改了 ,并做了标准的构建。跟以前一样 Visual Studio 重建了所有三个项目。

我发现,我将删除 Resources.Designer.csResources.resx ( 注释出了使用这些资源的.Properties.Resources 对象的代码)的源代码,然后再重新生成 WinForm,然后重新构建 WinForm

Resources.resxResources.Designer.cs 添加到项目将引入完整构建行为。

要查看我的资源文件是否损坏,我将再次删除它们,然后创建一个新的( 通过项目属性-> 资源) 文件。通过这里设置,完全重建仍将发生。

然后删除单个资源,但将资源文件保留在项目 即使没有添加资源,但资源文件仍然在项目中,则完全( 不需要) 重建将发生。

似乎只是将资源文件添加到 (.NET 3.5 ) 项目将导致 Visual Studio 2010始终重新生成该项目。这是 Bug 还是预期/预期的行为?

再次感谢 !

时间:原作者:0个回答

122 0

打开工具- 选择项目和解决方案- 在树中构建和运行,然后将"msbuild项目生成输出详细信息"设置为诊断。这将输出生成项目的原因,i.e.

项目'referencedproject'不是最新的。项目项'c:some.xml'的'复制到输出目录'属性设置为'始终复制'。

项目'自动'不是最新的。输入文件'c:myproject.pdb'后修改了输入文件'c:referencedproject.dll'。

在这种情况下,只有在更新时才复制 some.xml 。

Pre和post生成事件也可以触发构建。

原作者:
...