【问题标题】:Visual Studio 2013 Solution building not in build orderVisual Studio 2013 解决方案构建不按构建顺序
【发布时间】:2013-12-24 00:19:07
【问题描述】:

我无法让我的 C# 解决方案构建“Fresh”。如果我清理解决方案并再次构建它,它不会构建(我可以做几次,它会构建)。在它所依赖的工作程序和 Web 项目之前构建 azure 项目有一个错误。还有关于解决方案中的大多数项目是如何寻找的

WAT070 : The referenced assembly {...}/Worker.dll was not found. 
Please make sure to build the role project that produces this assembly before building this Windows Azure Cloud Service Project.
{...}\VisualStudio\v12.0\Windows Azure Tools\2.2\Microsoft.WindowsAzure.targets 1252    5   AzureProjectName

现在,如果我按照项目依赖项 -> 构建顺序中列出的顺序构建项目,一切正常。此外,Web 和工作角色列在 Azure 项目之前。

【问题讨论】:

  • 你能确认Worker是Windows Azure云服务项目的依赖吗?例如在 Projects 下拉列表中选择 Windows Azure 关闭服务项目时,在 Dependencies 中是否选中了 Worker?
  • 是的,就是这样。这两个角色都显示为云服务项目的依赖项。
  • 据我记得(现在已经有一段时间了),问题是其中一个 azure 项目对另一个 azure 项目存在依赖关系。一旦我从 web azure 项目中删除了对 worker azure 项目的依赖,它就可以构建“Fresh”,而无需构建项目两次或使用 1 个构建线程。

标签: c# visual-studio azure msbuild visual-studio-2013


【解决方案1】:

解决方法很简单。

您可以通过右键单击“项目解决方案”并选择“选择项目构建顺序”选项来设置您的项目构建顺序。

例如,我有一个 WpfFormApplicaiton1 和两个标题为“ClassLibrary1”和“ClassLibrary2”的类。默认情况下,Visual Studio 将其设置如下:

我的要求是“ClassLibrary1”将使用“ClassLibrary2”,“WpfFormApplication1”将使用“ClassLibrary1”。因此,为了满足这个要求,我必须更改默认的项目构建顺序。

转到项目依赖项;选择“ClassLibrary1”并将“ClassLibrary2”设置为其依赖项。

类似,选择“WpfFormApplication1”并将“ClassLibrary1”设置为其依赖项。

现在,所需的项目构建顺序已设置;由 Project Build Order 的选项确认。

解决方案来自我的blog

【讨论】:

  • 解决方案不是很简单,当您完成了所有这些后仍然无法正常工作。项目引用 GUID 的区分大小写缓存原来是我们的问题,请参阅此页面上的其他答案 stackoverflow.com/a/23699611/503688
【解决方案2】:

您的问题可能是未定义依赖项。即使构建顺序显示了项目的构建顺序,如果您没有在项目依赖项下为每个项目定义依赖项,msbuild 将不知道在继续之前等待依赖项构建完成.

澄清:除非您确实选中了某个项目是依赖项的框,否则构建顺序列表中的项目可能会并行构建而不是顺序构建。

您可以在Tools->Options->Project and Solutions->Build and Run下看到要构建的并行项目数量有一个默认值。

因此,要让构建过程等待依赖项构建,请确保在项目依赖项 -> 依赖项下检查所有“依赖于”字段以查找所需的项目。

【讨论】:

  • 并行项目的数量应该对此没有任何影响。否则单 CPU 计算机永远无法正确构建。
  • 另外,OP 确实详细说明了按照“依赖项”中显示的顺序构建的工作;因此,只能假设 定义了依赖项
  • @PeterRitchie - 并行项目设置默认可用内核的数量,我没有尝试将其增加到更多,但我确信这不会起作用。至于我在回答中所说的话,我只是在一个有两个项目的解决方案上尝试了这个,切换依赖项上的复选框确实决定了它们是同时构建还是按顺序构建。即使构建顺序列表两种方式都相同。
  • 也许我需要澄清我的答案,但我试图传达的是,除非您实际选中项目是依赖项的框,否则构建订单列表中的项目可能会并行构建并且不是顺序的。
  • 因此,当我将数字降至 1 时,它确实会生成。仍在尝试找到“缺少的依赖项”,但解决方案中有 21 个项目很难。
【解决方案3】:

我们遇到了项目指南大小写不同的问题。编辑项目文件解决了这个问题。我们将所有 Guid 更改为大写

【讨论】:

  • 您先生,是我的新英雄!这解决了我们奇怪的间歇性和不一致的“重建解决方案”错误。 Visual Studio 必须具有对 GUID 大小写的依赖不一致的内部缓存。哇。
【解决方案4】:

我也遇到了这个问题。就我而言,问题是我在解决方案中有几个项目引用。其他项目使用的框架版本与我的 Worker Role 不同(4.5.14.5)。

当我将所有项目更改为使用相同版本的框架时,解决方案将成功构建并运行。

【讨论】:

    【解决方案5】:

    我遇到了这个问题。就我而言,由 VS.Net 确定的解决方案的项目构建顺序不正确。具体来说,我的 Web 项目列在其三个依赖项之上。

    这三个依赖项列在解决方案资源管理器中 Web 项目的“参考”节点下。但是,在对话 Project Dependencies 中,web 项目不依赖于任何项目。

    另外,我注意到 Web 项目有一个小的蓝色感叹号,上面显示“Web 项目 '' 需要 SQL Server Express,这台计算机上没有安装......”。在摆弄 web.config 后,基于ASP.NET Web Api: Project requires SQL Server Express 并重新加载项目,感叹号消失了,项目依赖项在对话项目依赖项中正确检查,构建顺序正确反映了这一点。但是,当我恢复对 web.config 的更改时,作为测试,依赖项没有被删除,所以我很不确定是什么解决了我的问题。

    无论如何,在对话项目依赖项中,您可以手动检查任何未自动识别为依赖项的项目。

    【讨论】:

      【解决方案6】:

      检查以确保您的工作文件夹中没有任何残留的旧文件。这些可能会导致与 MSBuild 混淆。为避免这种情况,只需清除路径中的所有旧文件并获取最新文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-08
        • 2015-07-31
        • 2016-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多