由于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提出了很棒的建议!
以下是一些有用的链接:
答案 0 :(得分:0)
这个想法是,对于而不是的二进制依赖(DLL)涉及源控制工具(如Git),而是二进制引用工具(如 Nuget )
参见例如:
使用Visual Studio 2017和.NET Core,我们通过在MSBuild中引入
PackageReference
功能改进了NuGet包管理体验。
PackageReference
带来了新的和改进的功能,例如深度MSBuild集成,改进了日常任务(如安装和恢复,多目标等)的性能。
答案 1 :(得分:0)
首先,没有必要在源代码管理中管理构建工件(例如dll),因为它们是源代码中的输出文件。
然后将其他repos中的依赖项(dll)添加到父(主)repo的项目中,通常有以下选项:
正如Vonc所提到的,你可以将dll作为nuget包进行管理,然后将nuget包添加到主repo的项目中。
您还可以将其他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。
将来自另一个仓库的分支视为主仓库中的子树(文件夹)。然后在主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)
在任何时候,如果您的分支机构具有任何版本的从属程序集的工作代码,我就无法看到您需要做任何事情的任何原因。
您可以在项目中设置依赖项,如:
您还可以在解决方案中添加依赖项,如:
如果您的项目有多个具有依赖项的项目,您也可以在解决方案中设置构建顺序。
只要您构建的分支中的当前代码正在运行(使用任何版本的不同程序集,例如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/ 我很久以前在创建相同样本进行测试时所看到的。