【问题标题】:Strange VS2010 build glitch occurs in my solution我的解决方案中出现了奇怪的 VS2010 构建故障
【发布时间】:2011-08-01 16:45:38
【问题描述】:

我发现 Visual Studio 很少有这样的行为。其中一个原因是这可能是因为项目是从 VS2008 升级而来的。

具体一点。假设项目之间存在依赖关系,其中 A 依赖于 B,B 依赖于 C,C 依赖于 D。

A

现在说 A 有错误,但 B、C 和 D 编译正确。

接下来发生的事情是每次我尝试编译 A 时,VS 都会编译所有四个项目。

命令:右击项目A,选择Build。

菜单中的相同行为:构建/构建 A


有没有办法确保 Visual Studio 仅在依赖项目发生更改时重新构建这些项目?目前 Visual Studio 会重建所有依赖项。

我注意到下面链接上的建议是将解决方案划分为逻辑组(然后我想直接引用 .dll)。如果这是最好的前进方式,是否让每个项目构建到一个通用的 .\bin 文件夹,然后从那里引用?

相关问题:Visual studio keeps building everything

如果我能保留一个大的解决方案文件,那就太棒了。

更新:

  • 在此处描述的详细构建模式中发现了一个警告:http://support.microsoft.com/kb/2516078 虽然它似乎不相关。我还是要解决这个以防万一。 (现已修复,通过使用 $(VAR) 环境变量手动重新引用项目 + 路径提示)

  • 将台扇直接指向笔记本电脑。由于过热,CPU 被节流。

  • 检查每个项目并关闭自动序列化(在项目属性/构建屏幕中找到)

  • 增加了工具/选项/构建和运行中的最大并行构建数。鉴于它只是一台具有两个内核的笔记本电脑,我认为这不会有帮助,但确实如此。

  • 看到“之前已成功构建”...所以看起来希望的行为正在经常发生(仍在调查中)。不过现在情况好多了。

  • 仍在查看详细的构建日志并整理内容。

【问题讨论】:

  • 您使用的是什么版本的 Visual Studio?更重要的是,请举例说明什么对您不起作用,因为对于大多数人来说,它确实有效。
  • 我的视觉工作室并没有重建一切。只有那些已更改或已更改的依赖项才会构建。
  • 我在从以前的 VS 版本升级 sln 和项目文件时遇到了这个问题。在重新创建解决方案和项目后,我总是让它消失。
  • 我很惊讶能找到相信诸如“Visual Studio 构建总是重建所有依赖项”之类的话的人。如果不让成千上万的开发人员对微软感到愤怒,这怎么可能是真的?
  • @Stephen Cleary:许多项目都是从 VS 2008 迁移而来的。我想知道这是否是问题所在。我会尝试一下。谢谢。

标签: c# .net visual-studio


【解决方案1】:

您可能需要检查以下选项:

[x] 仅在 Run 上构建启动项目和依赖项

在工具 -> 选项 -> 项目和解决方案 -> 构建和运行下。

【讨论】:

  • 尝试了那个复选框,但不幸的是,VS 仍然在不必要的构建上工作。
【解决方案2】:

我不知道故障的原因。当我按 F5 时,VS 似乎只构建需要构建的内容。

但我有一个建议:善用“卸载项目”功能。如果您的解决方案仅因为您引用它们而包含项目,但这些项目本身不依赖于您的解决方案中的任何其他内容,那么一旦构建它们,您就可以卸载它们。

例如,这是我现在的情况:

我正在为我的项目开发 UI。我有一个专门针对我的 UI 的解决方案。

我需要参考其他团队成员正在开发的一些库,但我自己很少对这些库进行任何更改。

所以我的解决方案包含大约 15 个项目,但其中只有 10 个是我的。其他 5 个,我引用的库,不需要加载,除非我需要查看或更改该代码。所以我只是让它们“卸载”。

我每隔一两天“重新加载”它们,从源代码管理中获取最新更改,重新构建,然后再次卸载它们。

我还卸载了一些我自己很少需要更改的项目,例如我的框架库。

这使我的解决方案保持灵活,因为当我构建解决方案时,实际上只构建了大约一半的代码。它还可以加快搜索速度并使解决方案资源管理器不那么混乱。

【讨论】:

  • 您是否引用了这些已卸载项目的 .dll?我倾向于按项目引用。
  • @sgtz:见鬼。我说的是在我的解决方案中包含实际的代码项目并引用它们。当您卸载它们时,它们仍然被引用,但它们不会被重建。
  • 我是这么认为的。当我尝试这样做时,引用它们的项目将无法编译。我一定是错过了什么。
  • @sgtz:确保您正在执行“卸载项目”,而不是“删除”。并确保在卸载它们之前完成了完整的构建。
猜你喜欢
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 2015-07-04
  • 1970-01-01
相关资源
最近更新 更多