Visual Studio 2012无法构建依赖项目

33

我刚将一个VS2010项目升级到VS2012,现在遇到一个问题,即依赖的项目不会按需构建。例如,假设我的解决方案中有以下项目:

  • Library A
  • ConsoleApp 1

其中ConsoleApp 1引用Library A。如果我更改Library A类中方法的签名,并运行ConsoleApp 1,则由于运行ConsoleApp 1未导致构建Library A,因此ConsoleApp 1无法看到我的更改而出现编译器错误。

如果我手动构建Library A,然后手动构建ConsoleApp 1,它可以正常工作。但是,我希望在启动之前运行ConsoleApp 1应该会导致任何依赖项项目被重建。

我是否配置有误?还是这是VS2012的一个bug?


可能是一个bug,因为VS 2012仍处于RC阶段...不过不能确定... - walther
1
在您的项目依赖项中显示了什么(右键单击项目,然后选择项目依赖项)? - David Brabant
项目依赖关系看起来正确。例如,对于ConsoleApp 1,Library A的复选框已被选中。问题可能比我想象的更严重。如果我直接对ConsoleApp 1中的类进行更改,然后按F5 / 运行,ConsoleApp 1不会重新构建,并且执行上次构建的版本,而不是我的更改版本。 - user1438940
我在使用VS2012 Update 3时仍然遇到这个问题。求求你们把VS6带回来吧! - Neutrino
8个回答

51
您的症状听起来与我一段时间前经历的非常相似。请确保在构建 -> 配置管理器下,项目设置为使用当前活动解决方案配置活动解决方案平台进行构建。

这对我有用;我在发布模式下遇到了错误,并且每个项目的复选框都关闭了。+1 - Brian Mains
1
不错。我之前选择了 Any CPU 但是什么都没用。我切换了活动解决方案配置为 Mixed Platforms,现在依赖项目又可以构建了。 - Martin Ba
这正是我所遇到的问题!在从Xamarin Studio Mac迁移到Visual Studio Mac时,我遇到了这个问题。由于某种原因,它丢失了原始配置.. :/ - Thpramos
经过数小时的挫败后!谢谢。在我的情况下,我在本地成功构建了项目,但在VSTS上失败了。原来是因为VSTS上的构建定义使用“Relaese”作为“Active solution Configuration”,而我在本地使用“Debug”进行构建。谢谢! - Samer

19

尝试通过删除项目引用并重新添加它们来解决问题(路径如下:引用 ->(右键单击)添加引用 -> 解决方案 -> 项目)。在再次尝试之前,请保存全部。这就是我解决问题的方法。


3
所以,这不是确切的问题,但最终我将所有项目从解决方案中移除,编辑.csproj文件以删除项目引用,然后将每个项目添加回解决方案并重新创建引用。现在看起来运行良好! - user1438940
2
昨晚/今早我遇到了同样的问题。所以我从解决方案中删除了所有项目,然后将它们全部添加回去,在每个阶段添加项目引用以使其构建,现在一切都很好。 - Antony Scott
上面的两个评论对我有用。将所有项目从解决方案中移除,然后手动添加它们(在添加时进行构建)。胜利者!!! - Ryan

19

当解决方案的.suo文件被锁定且Visual Studio无法再向其写入时,就会发生这种情况。此问题的另一个症状是,在打开解决方案时,您会看到临时suo文件被创建在解决方案旁边。尝试关闭Visual Studio并删除工作区中的所有*.suo文件。然后重新打开Visual Studio并重建所有内容。不需要手动重建您的解决方案。如果锁定了.suo,则会修复此问题,就像今天发生在我的同事身上的那样。

在他的情况下,原因似乎是他在Visual Studio仍然打开的情况下关闭了笔记本电脑。也许Windows关闭没有干净地完成?我们只能推测.suo最初如何被锁定。


在我的情况下,我实际上没有检查.suo文件是否被锁定。我只是在构建成功后看到了一些构建错误,并且在执行某些重命名重构时,Visual Studio也会搞乱代码。我删除了解决方案旁边两个.suo文件中较大的一个(即.v12.suo),现在构建错误似乎已经消失了。 - superjos
这解决了我的问题。 - Candy Chiu

8

我尝试了以上所有的解决方案,但是都没有解决我的问题。我发现这是因为ConfigurationManager中的Active configuration仅设置为构建主(启动)项目。

进入Build > ConfigurationManager

确保您要构建的所有项目都被选中,如下面截图所示。 这是在Asp.Net论坛上的类似问题here,这是关于MSDN的详细信息。虽然很奇怪,因为我从来没有改过这些设置,而且上周它还正常工作。 enter image description here


6
我遇到了类似的问题,解决方法(或问题)是在“工具 > 选项... > 项目和解决方案 > 构建和运行”下的“仅在运行时构建启动项目和依赖项”被勾选。截图显示了我的当前可行解决方案。 请看截图:Visual Studio 2012 Options

对我来说,Visual Studio 非常混乱,所以我取消了这个框并重新构建,所有的错误都消失了。然后我重新选中该框并进行了一次重建,现在一切似乎都可以正常工作了。谢谢。 - joshboley

2
对于我来说,我通过右键单击项目;构建依赖项>项目依赖项来解决问题。然后手动为每个项目设置顺序。如果你有很多项目,这将非常痛苦。

enter image description here


1

确保引用项目的 .Net 框架版本与被引用项目相同或更高。


0
在解决方案资源管理器中右键单击解决方案,然后单击“清理解决方案”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接