Visual studio 为什么每次我点击“VS”时都要重建我的所有项目;“玩”吗;?

Visual studio 为什么每次我点击“VS”时都要重建我的所有项目;“玩”吗;?,visual-studio,Visual Studio,我是不是有什么奇怪的环境让这一切发生了?我只想更改消息框的文本(没有其他程序集依赖于该文本),但是VS将重建我的所有项目,这将永远花费时间。有什么想法吗?您可以通过“构建”菜单从常规构建中排除项目 建造→ 配置管理器→ 取消选中不希望总是生成的项目 通过每次只构建绝对需要构建的项目,这可以大大加快构建时间 请注意,如果需要重建未独立选择的项目(右键单击->在项目上构建等),则必须构建这些项目 您还可以设置备用的构建配置,以便可以混合和匹配将在何时构建的内容。播放按钮可能不是您想象的那样,或者在项

我是不是有什么奇怪的环境让这一切发生了?我只想更改消息框的文本(没有其他程序集依赖于该文本),但是VS将重建我的所有项目,这将永远花费时间。有什么想法吗?

您可以通过“构建”菜单从常规构建中排除项目

建造→ 配置管理器→ 取消选中不希望总是生成的项目

通过每次只构建绝对需要构建的项目,这可以大大加快构建时间

请注意,如果需要重建未独立选择的项目(右键单击->在项目上构建等),则必须构建这些项目


您还可以设置备用的构建配置,以便可以混合和匹配将在何时构建的内容。

播放按钮可能不是您想象的那样,或者在项目设置中关闭了增量链接等功能。

如果选中仅在运行时生成启动项目和依赖项的选项,则在不使用配置的情况下对此功能的控制有限


工具→ 选择权→ 项目和解决方案→ 构建并运行→ 仅在运行时生成启动项目和依赖项播放按钮是启动调试功能

是的,VisualStudio将要求解决方案中的每个项目在该点上进行构建。但请注意,要求建造和实际建造是不同的事情。要求构建只是说,如果您愿意,将再次进行构建。然后,MsBuild将在幕后进行一些检查,并决定是否应该实际构建底层项目


如果你的项目正在建设中,那么可能还有其他一些问题。你能给我们一些更多的信息,如语言、项目类型等吗?

也可以将“项目过期时运行”设置更改为“从不构建”,而不是“询问”。 (它位于菜单'Tools->Options->Projects&Solutions->Build&Run) 这样,每次修改构建过时的项目时都需要按F6键,但至少它允许您在不重新编译的情况下使用F5进行调试

我不得不说,这并不理想,但它是有意义的。
尽管我在使用casini时遇到了一个问题:每次我按F5时,应用程序池都没有重新启动,因为casini一直在运行。遇到问题时,您必须从icontray手动停止casini,但与重建整个站点相比,这是一项节省时间的重大措施。

您可以找出导致Visual Studio认为每个项目都过时的原因,然后直接解决该问题

  • 选择工具→ 选择权→ 项目和解决方案→ 构建并运行
  • 对于设置“MSBuild项目生成输出详细信息:”选择“诊断”
  • 建造
  • 您将在输出窗口中获得大量的输出,详细说明构建正在做什么。在建立每个项目之前,它会打印出它认为它过时的原因。这种输出的一个例子是:

    Project 'Foo' is not up to date. Input file 'c:\Bar.cs' is modified after output file
    

    这些“非最新”消息应该会指出不必要构建的真正原因,然后您可以修复这些问题。

    这是一个非常简单的场景。我有一个WPF应用程序(XAML/C#)作为启动项目,然后我有11个类库项目(C#),WPF直接或通过其他一些类库项目间接引用这些项目。无论我是否对它们进行了任何更改,每次我点击Build或Play时,它们都在构建中。这正常吗?如果没有任何改变,有没有办法让它不构建?我的WPF应用程序也有同样的问题。也许这与WPF有关。这是所有建议中最大的不同,因为我不需要对大多数项目进行任何更改。我仍然希望VS能够检测到项目已经更新,因此不会构建它。-1因为这并不能解决他面临的问题。由于某些原因,VS不承认构建依赖项是最新的,并强制重新构建。我仍然有这个问题(自从移动到VS2012),并将感谢任何建议@大卫库西亚大卫,请看看我的答案。它解释了如何确定Visual Studio认为需要重建每个项目的确切原因。我的WPF应用程序也有同样的问题。根据你在下面对JaredPar的评论,也许它与WPF有关。很有趣!谢谢你的建议。不能说我最近在VS 2015中看到过这个问题,但是如果我再次看到它,我会在这里用“诊断”输出更新我的经验。非常感谢!对我来说,“真正的原因”是几乎所有项目中的一个附加配置文件,其中“复制到输出目录”被设置为“始终复制”,而不是“更新时复制”。