C# Visual Studio 2013解决方案生成不符合生成顺序

C# Visual Studio 2013解决方案生成不符合生成顺序,c#,visual-studio,azure,msbuild,visual-studio-2013,C#,Visual Studio,Azure,Msbuild,Visual Studio 2013,我在获取构建“新鲜”的C#解决方案时遇到问题。如果我清理解决方案并再次构建它,它将不会构建(我可以做几次,它就会构建)。它有一个关于azure项目在其所依赖的工作程序和web项目之前获得生成的错误。还将介绍解决方案中的大多数项目是如何寻找的 WAT070 : The referenced assembly {...}/Worker.dll was not found. Please make sure to build the role project that produces this a

我在获取构建“新鲜”的C#解决方案时遇到问题。如果我清理解决方案并再次构建它,它将不会构建(我可以做几次,它就会构建)。它有一个关于azure项目在其所依赖的工作程序和web项目之前获得生成的错误。还将介绍解决方案中的大多数项目是如何寻找的

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项目之前

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

澄清:除非您实际选中某项是依赖项的复选框,否则“生成顺序”列表中的项目可能并行生成,而不是按顺序生成

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


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

我们遇到了一个问题,即在这种情况下,项目GUID不同。编辑项目文件解决了这个问题。我们将所有guid更改为大写

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

我遇到了这个问题。在我的例子中,解决方案的项目构建顺序(由VS.Net确定)是不正确的。具体来说,我的web项目列在它的三个依赖项上面

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

另外,我注意到web项目有一个蓝色的感叹号,上面有胡佛的消息“web项目“”需要SQL Server Express,但这台计算机上没有安装它…”。在修改web.config之后,基于并重新加载项目,感叹号消失,项目依赖关系在“项目依赖关系”对话框中被正确检查,构建顺序正确反映了这一点。但是,作为测试,当我将更改恢复到web.config时,依赖项没有被删除,因此我很不确定是什么修复了我的问题


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

解决方案非常简单

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

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

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

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

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

现在,设置了所需的项目构建顺序;由项目建造订单的选项确认


解决方案来自我的。

我也有这个问题。在我的例子中,问题是我在解决方案中有几个项目引用。其他项目使用与我的工作者角色不同的框架版本(
4.5.1
vs
4.5


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

并行项目的数量不应对此产生任何影响。否则单CPU计算机永远无法正确构建。此外,OP确实按照“依赖项”工作中显示的顺序详细描述了构建;因此,我们只能假设存在依赖关系defined@PeterRitchie-并行项目设置默认为可用内核的数量,我没有尝试将其增加到更多,但我确信这不会起作用。至于我在回答中所说的,我只是在一个有两个项目的解决方案上尝试了这一点,切换依赖项上的复选框确实决定了它们是同时构建的,还是按顺序构建的。即使构建顺序列表在两个方面都是相同的。也许我需要澄清我的答案,但我试图传达的是,除非您实际选中某个项是依赖项,否则构建顺序列表中的项目可能并行构建,而不是按顺序构建。因此,当我将数字降为1时,它确实构建了。仍在尝试查找“缺少的依赖项”,但解决方案中有21个项目很难找到。您能否确认Worker是Windows Azure云服务项目的依赖项?e、 g.在“依赖项”中,当在“项目”下拉列表中选择“Windows Azure关闭服务项目”时,是否选中了“工作人员”?是的,就是这样。这两个角色都显示为云服务项目的依赖项。根据我的记忆(现在已经有一段时间了),问题是其中一个azure项目与另一个azure项目之间存在依赖关系。一旦我删除了从web azure项目到worker azure项目的依赖关系,它就可以构建“新鲜”的项目,而无需构建两次或一个构建线程。先生,你是我的新英雄!这修复了我们奇怪的间歇性和不一致的“重建解决方案”错误