7

我最近升级到 VS.NET 2012 并且在调试时开始遇到一个非常令人沮丧的问题。

项目 A 有对项目 B 的项目引用。当我编辑项目 B 时,我希望构建/调试项目 A 的操作能够检测项目 B 中的更改并在项目 A 的构建过程中自动包含它。(这有点意思项目依赖关系。)这正是 VS 2010 中过去发生的事情。

但这在 2012 年不会发生。事实上,即使我明确地构建项目 B,项目 A 也不会接受这种变化,除非我重建项目 A。

所以现在我不得不显式地构建项目 B,然后返回到项目 A 并显式地重建它,以便将项目 B 中的修改包括在内。

想法?

4

5 回答 5

6

您是否在解决方案中设置了依赖项项目?

我们可以从以下位置设置它们:

右键解决方案->属性->项目依赖

顺便问一下,您是在 Visual Studio IDE 中还是通过 msbuild 命令构建了您的解决方案?

如果您使用 msbuild 构建项目,则应在项目文件中添加 DependsOnTargets 属性。

更多信息您可以参考:

http://msdn.microsoft.com/en-us/library/ms366724.aspx

于 2012-11-09T11:33:30.230 回答
3

您的第 3 段似乎表明对依赖项的工作方式存在误解。如果我弄错了,请原谅我。

如果项目 A 依赖于项目 B,则构建项目 B 不会强制重新构建项目 A。但是,构建项目 A 应检查项目 B 中的更改并在需要时自动重新构建 B。

在这种情况下,项目 A 是父项目或根项目。构建父级将检查它所依赖的所有项目,如果它们已过时,则重新构建它们。始终构建父项目将首先自动构建过时的依赖项,然后构建父项目以获取依赖项中的任何新更改。

A
 \
  B
  |\
  C D

在这个例子中,如果 B 有依赖关系,它们也会被构建。如果你显式地构建了 B,它的依赖项 C 和 D 将被检查并重建,而不是 A。

如果您显式构建 A,则首先检查并重建 C 和 D(如有必要),然后是 B,最后是 A。

于 2012-11-13T17:18:22.073 回答
1

我之前也遇到过类似的问题,原因是 A 对 B 的引用是常规引用(对 DLL 文件),而不是“项目引用”。这种情况肯定会解释你看到的行为。

要检查,请在ProjectA.csproj文本编辑器中查看,并检查所有<Reference><ProjectReference>元素以确保它们是您认为应该的方式。

于 2013-05-23T16:47:15.267 回答
0

我认为您正在寻找持续集成 (CI) 服务器。可以将 CI 配置为监视源存储库并在向代码库提交新更改时触发以构建目标程序集。

否则,正如其他人所提到的,项目依赖项可用于重建引用的程序集。

于 2012-11-13T19:35:49.950 回答
0

造成这种情况的一个潜在原因是 .suo 文件被锁定。请参阅我对这个问题的回答:

Visual Studio 2012 不构建依赖项目

于 2012-11-26T18:53:19.080 回答