我有两个解决方案,solution1包含project1,它生成一个源文件,编译成solution2(有project2)。您只需构建并运行solution1,然后构建并运行solution2。
我的一些团队成员抱怨这种可用性,因此,我将两个项目放在一个解决方案中,并将它们设置为运行(多个启动项目)。我在project2中放置了一个预构建步骤,等待project1完成运行,因此将使用project1运行时生成的最新代码构建project2。
麻烦的是,它不起作用! Visual Studio构建project1,而项目2正在等待它完成运行(因为那时代码project2需要由project1生成)。但Visual Studio显然没有运行任何项目,直到它们都完成了构建,因此等待项目1'使project2不受构建(按设计),但也使project1无法运行(尽管它不必)。
有没有办法绕过这个并执行我想要的功能,或者代码/解决方法?
答案 0 :(得分:2)
Visual Studio根据您的依赖性计算构建顺序。如果项目A依赖于项目B,则Visual Studio将在A之前构建B。
In order to change build order just right click the Solution node and select
"Project Build Order"
这修复了构建顺序,但没有完全解决我的问题。它确实引导我直接进入解决方案,因此我正在编辑答案以使其完整(而非评论)。
为了使它运行Project1来生成代码,我不得不插入一个post build步骤(右下角的compile,build-events按钮),它只是程序集的名称(project1.exe)。这运行了project1,它编辑了属于project2的文件,导致make逻辑看到project2中的文件比project2.exe更新,启动了project2的重建作为奖励。现在你只需要对项目进行更改,使用F5和Boom运行它,它只是工作,没有人是我生成代码的明智之处。
答案 1 :(得分:1)
在解决方案中只有两个项目。使用项目引用将项目2设置为唯一的Startup项目和引用项目1。然后,您可以将项目1设置为始终使用Visual Studio中的配置管理器进行构建。在构建/运行项目2时,项目1将始终首先重建。
编辑:还要确保您的项目依赖项已设置,以便项目2依赖于项目1.项目中的项目 - 项目 - >项目依赖性。
为什么这次投票失败?它完全符合他的要求。只需将项目1的构建位置设置为其项目2引用的位置即可。我想象他的资源文件夹,在哪里......它将重建他的项目1,然后用项目1的最新程序集重建他的项目2。