Visual studio 如何在一个解决方案中实现多个项目的连续集成和部署?

Visual studio 如何在一个解决方案中实现多个项目的连续集成和部署?,visual-studio,mercurial,continuous-integration,continuous-deployment,appveyor,Visual Studio,Mercurial,Continuous Integration,Continuous Deployment,Appveyor,我们使用的内容: 我们使用mercurial和bitbucket作为存储库。Appveyor和kudu持续集成和部署。我们使用visual studio 2015作为IDE 我们拥有的: 我们有不同的网络项目。他们共享一些其他项目。所有web项目都有自己的解决方案。每个解决方案都有自己的存储库 如果开发部门发生变化。Appveyor构建此存储库,测试并部署它 如果默认情况下有更改,kudu将构建并部署此存储库 我们想要什么: 我们希望将所有这些项目合并到一个解决方案中。但我不知道如何实现持续集成

我们使用的内容:

我们使用mercurial和bitbucket作为存储库。Appveyor和kudu持续集成和部署。我们使用visual studio 2015作为IDE

我们拥有的:

我们有不同的网络项目。他们共享一些其他项目。所有web项目都有自己的解决方案。每个解决方案都有自己的存储库

如果开发部门发生变化。Appveyor构建此存储库,测试并部署它

如果默认情况下有更改,kudu将构建并部署此存储库

我们想要什么:

我们希望将所有这些项目合并到一个解决方案中。但我不知道如何实现持续集成或部署


如果我在webproject1上做了一些更改,我只想构建和部署webproject1。解决方案中的其他WebProject既不应构建也不应部署。

也许单个存储库可以帮助您。使用相对路径包含来自不同应用程序的共享库

每个应用程序仍然可以有自己的解决方案文件,您的CI设置也可以保持原样。所做的更改是,您在所有应用程序中拥有的共享项目将使用相对路径引用。例如:

Repository root\Core\Component1\Component1.csproj
存储库根目录\Core\Component2\Component2.csproj
存储库根目录\Applications\App1\App1.sln
存储库root\Applications\App1\Domain\Domain.csproj
存储库root\Applications\App1\Web\Web.csproj
存储库根目录\Applications\App2\App2.sln
存储库root\Applications\App2\Domain\Domain.csproj
存储库root\Applications\App2\Web\Web.csproj

现在,通过使用相对路径将现有项目添加到解决方案中,您的不同应用程序可以包含所需的核心\组件

您的持续集成系统将有VCS触发器监视应用程序和依赖项,因此只有相关更改才会触发构建。 因此,如果App1开发者对Component1进行了更改,并且Component1也被App2使用,构建服务器将触发对App1和App2的构建,并发出任何中断性更改的信号。但是,如果App2不依赖于Component1,则只有App1将生成。 这是通过为应用程序配置构建触发器来实现的

与使用单个.sln相比,此策略的一个好处是,您不必在每次构建解决方案时构建所有内容(也不必在每次使用不同的应用程序时配置要构建的项目)

还请注意,您可以使用多个存储库来实现这一点。但这意味着您需要在正确的位置检查它们,这样您的相对路径才能工作。它也相当模糊,因为如果您签出App1并尝试构建它。这根本不起作用,你必须弄清楚还有哪些回购协议需要核实,等等


您使用的是Mercurial,但仅供参考,Git处理此问题的方法之一是使用。

似乎您并不真正需要一个解决方案。是否要在同一个visual studio实例上打开所有项目?这就是你想要单一解决方案的原因吗?它与开发(调试、依赖、nuget等)有关。如果你有问题,可以询问。这种方法对你有帮助吗?