【问题标题】:Build fails on first attempt then passes第一次尝试构建失败然后通过
【发布时间】:2014-04-27 20:49:45
【问题描述】:

我有一个包含许多项目的解决方案,其中两个是 WebserviceConsoleApplicationWebservice 是解决方案中的启动项目。我的解决方案构建顺序如下

  1. 项目A
  2. 项目B
  3. 控制台应用程序
  4. 网络服务

两个项目都引用了 ProjectA 和 ProjectB。现在,当我清理我的解决方案并尝试构建解决方案时,它第一次失败了。错误来自我正在实例化 ProjectA 的 XYZ 类的 ConsoleApplication 项目中的类的构造函数。错误是

The type 'XYZ' is defined in an assembly that is not referenced. You must add a reference to assembly 'ProjectA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. ProjectPath\Program.cs

但是,当我再次构建解决方案时,它会成功构建。谁能帮我理解这种行为。无论如何,这对我的项目都不是致命的,但我不希望 Visual Studio 决定何时做什么。我想知道这种行为的原因。

另外,当我第一次构建解决方案时,我在 ConsoleApplication 的调试文件夹中看不到 ProjectA 或 ProjectB 的 .dll。然而,在第二次尝试时,这些 dll 在调试文件夹中可见并且构建成功。

关于如何解决此问题的任何建议?

【问题讨论】:

  • 项目如何相互引用?如果您引用项目的输出 .dll 而不是项目本身,这听起来像是您可能会看到的行为。
  • 您是在使用项目引用还是通过文件名引用 ProjectA 和 ProjectB?
  • 听起来构建顺序有点不正常,它试图与 ConsoleApplication 同时构建 ProjectA。由于 ConsoleApplication 在 ProjectA 完成之前构建,因此它失败了。第二次运行时,ProjectA 已经构建完成,一切顺利。
  • @David:我引用的是项目而不是 dll。
  • @JoachimIsaksson:有办法解决吗?

标签: c# .net visual-studio build


【解决方案1】:

这通常是构建顺序问题...在您的解决方案上,右键单击并转到构建顺序。

然后设置正确的项目构建顺序。

干杯

【讨论】:

  • 我在我的问题中提到了构建顺序,对我来说这似乎是正确的。你能告诉我这里的构建顺序是什么吗?
  • 很抱歉。您是否在 ProjectA 中引用了任何其他第三方 dll?
  • 是的。我引用了我创建的外部 dll。
【解决方案2】:

听起来您还没有设置项目依赖项。您必须正确设置构建依赖项,即

  1. Webservice 依赖于 ProjectA 和 ProjectB
  2. 控制台应用程序依赖于 ProjectA、ProjectB 和 Webservice

让console依赖webservice很重要,因为只有这样webservice才能保证在console Application之前构建。

对于 Visual Studio 2012,右键单击您的解决方案 > 属性 > 项目依赖项 >

【讨论】:

  • 您的第二点无效。 Webservice 在我的解决方案中引用控制台应用程序。我认为我的构建顺序应该传达:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 2013-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
相关资源
最近更新 更多