在Visual Studio Online源代码控制中“共享”类库

时间:2015-01-02 15:08:07

标签: visual-studio tfs azure-devops

我们目前正在将源代码管理迁移到Visual Studio Online。我们旧系统(SourceGear Vault)中的一个功能是在解决方案之间共享项目。虽然这为我们的Framework项目在每个解决方案中创建了一个文件夹,但它在签入更改时保持最新。

这对我们很有用,因为它允许我们在使用它的所有解决方案中处理框架代码。我知道编译dll并引用它们的更好的做法 - 在开发的这一点上,我们希望继续使用这个核心框架在所有解决方案中进行完整的代码访问和调试。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:5)

您有一些同样有效的选项来处理共享项目:

  1. 从需要它的每个解决方案中引用相同的项目。
  2. 这使您可以在使用消费解决方案时完全控制共享项目的源代码,并且可以允许更轻松的调试。

    这里的缺点是,如果解决方案A在周四发布,维护和发布可能会变得更加棘手,但解决方案B将在3个月内发布,并且处于一个巨大的重构周期中,该周期已经显着修改了共享组件X,和共享组件X不够稳定,无法释放。

    1. 从内部NuGet仓库引用共享组件。
    2. 您设置发布管道以将共享组件推送到NuGet作为发布过程的一部分(理想情况下,使用专用的发布管理工具...... Microsoft Release Management就是我在这里想到的) - 您检查代码,项目构建。发布过程将其打包并将其推送到NuGet作为"预发布"版。您可以在需要最新版本的任何内容中引用最新版本。 如果您需要引用已知良好的稳定版本,只需确保您的项目配置为从NuGet中提取特定版本。

      当你完成后,你已经测试了共享的东西,你知道一切都很好,你批准了预发布版本,并且相同的二进制文件被重新打包成一个稳定的"版本

      这里的缺点是您的团队还有一些额外的软件要求,配置和培训。这是我推荐的方法。

      1. 将二进制文件检入源代码管理。
      2. 我不推荐这个 - 你最终膨胀你的源代码控制回购(如果你正在使用Git,它是一个明确陈述的反模式 - 永远不会将二进制文件放入Git中会导致长期严重的性能问题,并且从未明确哪些项目正在使用哪些版本的程序集。这是一场维护噩梦。

        (1)是最好的方法,如果您以锁定方式释放所有内容并且不必担心维护单独的版本。

        如果#1为假,

        (2)是最好的方法。

        (3)是最好的方法,如果#1是假的,并且你是从2006年开始发帖的时间旅行者。

答案 1 :(得分:0)

您是否考虑过使用签入二进制文件或NuGet repo 方法实施符号服务器源服务器索引?这使您可以在调试时轻松返回源,并且它来自单个已知位置。 Visual Studio Online和Team Foundation Server具有内置支持,可帮助您在构建过程中获得此设置。这里有更多信息,请点击此处:Source Server and Symbol Server Support in Team Foundation Server and Visual Studio Online

Setting up Symbol Server and Source Server with Visual Studio Online and Team Foundation Server

答案 2 :(得分:0)

感谢您的回复。我们实际上找到了一个适合我们的解决方案。当我们想要访问代码库时,我们将框架项目分支到实现项目中。如果不是,我们只使用DLL

如果随后将其更改并检入实施项目,则可以在准备好时将其与其他框架分支合并。

如果框架代码被大量开发,这可能不会很好,因为现在它只是经历了一些小的补充和调整,因此不会受到合并问题的困扰。

答案 3 :(得分:0)

我必须同意大多数人的意见。我刚遇到同样的问题。我在内部网络上实现了Nuget Gallery Site。实施起来很痛苦,但一旦实施,它就很容易使用。我创建了一个实现ADO.Net和EntityFramework的类库项目。我将它捆绑到NuGet包中并将其上传到内部NuGet库。从那里我可以将包源添加到内部NuGet库并获取我上传的包。非常简单方便。

我使用Visual Studios 2017设置了NuGet Gallery。仅供参考:确保构建项目不是Publish的一部分。它不会使用ViewHelper.cshtml错误呈现。

我使用Visual Studios 2015创建了项目。我以管理员身份运行命令提示符。我还必须将NuGet.exe文件复制到项目文件所在的目录中。

请查看以下链接以获取更多信息。

NuGet Gallery
Hosting NuGet Gallery
Create and Publish Package
Creating a Package
Create .Net Standard Package