VSTS - 具有项目依赖性和Git存储库的Asp.Net构建

时间:2017-12-15 05:37:36

标签: asp.net git repository azure-pipelines

由于VSTS试图屈服于流行的Git源代码控制,我还没有看到构建位于Git存储库中的.Net项目的良好描述,它们之间存在项目依赖关系。

例如,在Visual Studio中,我构建了一个包含彼此依赖项目的解决方案。然后,在VSTS中,每个.Net项目都在单独的Git存储库中进行版本控制。

那么,如何在VSTS上构建?如何从一个项目中获取工件(读取:DLL)到另一个项目的项目中?

更新时间:12/18/17 我接受了@ VonC的建议并在VSTS(Visual Studio Team Services)托管的Nuget包上进行了跟进。我能够做到这一点。此过程使.Net解决方案文件和项目依赖项OBSOLETE。

如果要重用库,可以将二进制文件保存为NuGet包。

在下游项目中,您只需将VSTS url引用分配给Nuget包,以使Nuget Restore在构建项目中查找/放置二进制文件。

您必须下载并安装Credentials工具,以便将二进制文件推送到VSTS的软件包位置。此外,请告知管理员添加VSTS Marketplace中的软件包功能。

谢谢,@ VonC提出了很棒的建议!

以下是一些有用的链接:

3 个答案:

答案 0 :(得分:0)

这个想法是,对于而不是的二进制依赖(DLL)涉及源控制工具(如Git),而是二进制引用工具(如 Nuget

参见例如:

  

使用Visual Studio 2017和.NET Core,我们通过在MSBuild中引入 PackageReference 功能改进了NuGet包管理体验。
  PackageReference带来了新的和改进的功能,例如深度MSBuild集成,改进了日常任务(如安装和恢复,多目标等)的性能。

https://blog.nuget.org/images/2017-03-16-NuGet-now-fully-integrated-into-MSBuild/pr-in-action.png

答案 1 :(得分:0)

首先,没有必要在源代码管理中管理构建工件(例如dll),因为它们是源代码中的输出文件。

然后将其他repos中的依赖项(dll)添加到父(主)repo的项目中,通常有以下选项:

选项1:将构建工件作为包管理

正如Vonc所提到的,你可以将dll作为nuget包进行管理,然后将nuget包添加到主repo的项目中。

选项2:git子模块

您还可以将其他repos视为主repo的子模块,并且都从子模块repos和构建中的主repo构建项目,然后主repo项目可以从子模块repos'构建工件获取依赖项

为主仓库添加子模块的命令:

# In local main repo
git submodule add <URL for a submodule repo>
git commit -m 'add a submodule'
git push

注意:在VSTS构建定义中,您应该在“获取源代码”步骤中选择结帐子模块

有关git子模块的详细信息,您可以参考Submodules

选项3:git子树(git子模块的替代方式)

将来自另一个仓库的分支视为主仓库中的子树(文件夹)。然后在主repo和子树中构建项目,并从主要repo项目的子树中获取依赖项。

在主仓库中添加子树的命令:

git submodule add --prefix=submodule1 <URL for sub repo> master
git push

然后它将在子仓库submodule1分支中添加文件夹master,并在主仓库中提交更改。

有关git子树的详细信息,可以参考 Git subtree: the alternative to Git submodule

答案 2 :(得分:-1)

在任何时候,如果您的分支机构具有任何版本的从属程序集的工作代码,我就无法看到您需要做任何事情的任何原因。

例如依赖关系: enter image description here

您可以在项目中设置依赖项,如:

enter image description here enter image description here enter image description here

您还可以在解决方案中添加依赖项,如:

enter image description here

如果您的项目有多个具有依赖项的项目,您也可以在解决方案中设置构建顺序。

只要您构建的分支中的当前代码正在运行(使用任何版本的不同程序集,例如Classlibrary1的版本为1.0.0.0,Classlibrary2的版本为1.2.2.1&amp; so;依此类推其他参考后)这种方法将起作用。

Visual Studio和Visual Studio中存在多年的项目依赖项。 。净。只要这些项目存在于同一个TFS分支中,您就可以在依赖项目中添加项目依赖项。您还可以在解决方案中管理项目构建顺序。

对于更复杂的场景,例如不同的存储库或分支依赖关系,您需要修改构建工作流,但这也很有可能。

您也可以参考 http://dailydotnettips.com/2015/11/25/how-to-identify-the-project-dependencies-in-visual-studio/ 我很久以前在创建相同样本进行测试时所看到的。