Visual Studio 2013 解决方案构建不按构建顺序
Posted
技术标签:
【中文标题】Visual Studio 2013 解决方案构建不按构建顺序【英文标题】:Visual Studio 2013 Solution building not in build order 【发布时间】: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 个构建线程。 【参考方案1】:解决方法很简单。
您可以通过右键单击“项目解决方案”并选择“选择项目构建顺序”选项来设置您的项目构建顺序。
例如,我有一个 WpfFormApplicaiton1 和两个标题为“ClassLibrary1”和“ClassLibrary2”的类。默认情况下,Visual Studio 将其设置如下:
我的要求是“ClassLibrary1”将使用“ClassLibrary2”,“WpfFormApplication1”将使用“ClassLibrary1”。因此,为了满足这个要求,我必须更改默认的项目构建顺序。
转到项目依赖项;选择“ClassLibrary1”并将“ClassLibrary2”设置为其依赖项。
类似,选择“WpfFormApplication1”并将“ClassLibrary1”设置为其依赖项。
现在,所需的项目构建顺序已设置;由 Project Build Order 的选项确认。
解决方案来自我的blog。
【讨论】:
解决方案不是很简单,当您完成了所有这些后仍然无法正常工作。项目引用 GUID 的区分大小写缓存原来是我们的问题,请参阅此页面上的其他答案 ***.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.1
与 4.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 混淆。为避免这种情况,只需清除路径中的所有旧文件并获取最新文件。
【讨论】:
以上是关于Visual Studio 2013 解决方案构建不按构建顺序的主要内容,如果未能解决你的问题,请参考以下文章
在 MS Visual Studio 2013 中构建多个项目
在 Visual Studio 2013 中完成整个编译后是不是可以运行构建后事件?
如何设置 TFS 2013 以使用 Visual Studio 2013 或 Visual Studio 2017 构建
如何使用Visual Studio 2013或Visual Studio 2017设置TFS 2013