【问题标题】:Forced to Rebuild Project Depedencies in Visual Studio 2012强制在 Visual Studio 2012 中重建项目依赖项
【发布时间】:2012-10-25 14:24:29
【问题描述】:

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

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

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

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

想法?

【问题讨论】:

  • 这些是什么类型的项目?什么样的变化表现出这个问题? (例如,当您编辑项目 B 时,您是否真的对其进行了需要重建 A 的更改?)
  • 一个是 Windows 窗体应用程序(项目 A),一个是 DLL(项目 B)。是的,我正在进行更改(代码更改),应该强制在项目 A 上构建。

标签: visual-studio msbuild visual-studio-2012


【解决方案1】:

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

我们可以设置它们:

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

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

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

更多信息可以参考:

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

【讨论】:

  • 我正在使用 Visual Studio 2012。项目 A 依赖于项目 B。这是由 VS.NET 自动设置的,我只是仔细检查了它。
【解决方案2】:

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

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

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

A
 \
  B
  |\
  C D

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

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

【讨论】:

  • 我相信我没有任何误解。正如我所说,我在项目 B 中进行了更改。然后我构建了项目 A,并且项目 B 中的更改不包括在内。我关于建造/重建的观点只是为了说明我目前的工作,而不是描述我期望它如何工作。您的解释仍然没有告诉我为什么在我对项目 B 进行更改后构建项目 A 不会导致这些更改被包含在内。
【解决方案3】:

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

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

【讨论】:

  • 如果这不是问题,那么项目文件有问题或 Visual Studio 有问题。
【解决方案4】:

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

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

【讨论】:

    【解决方案5】:

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

    Visual Studio 2012 not building dependent projects

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多