是否有 .NET 替代 Java 工件存储库(例如 Nexus 或 Artifactory)?您在哪里存储版本控制的 DLL?

问题描述 投票:0回答:5

在哪里存储 Team System 自动构建所需的二进制文件? 您是否将它们与代码一起存储在 SCM 或其他地方? SCM 中存在大量二进制文件是否会导致源代码控制出现任何性能问题?

需要能够恢复到某些外部库的早期版本,以修复已发布版本中的错误,但这些版本不兼容。分支可以解决问题,但我认为将二进制文件与代码一起存储是反模式。

欢迎任何建议。

.net build-process build-automation dependency-management refix
5个回答
3
投票

Nexus 和 Artifactory 目前都支持存储 .net 开发中使用的二进制工件和依赖项。对于使用 NuGet 包构建 TFS 并集成到 Visual Studio,您可以查看 此博客。


1
投票

我过去一直使用 svn:externals 来实现此目的,如 cringe 所描述的。但在本地工作副本中更新速度很慢。我和几个朋友启动了一个开源项目来尝试解决这个问题,该项目仍处于早期阶段,但如果这是您感兴趣的问题,您可能需要关注它(或者甚至帮忙)。它称为 Refix,托管在 CodePlex上。


0
投票

我们始终将外部二进制依赖项与源代码、图像、构建脚本以及在版本控制系统 (VCS) 中一起构建解决方案所需的所有其他工件一起存储。这就是我真正擅长的 VCS,它确保我们拥有适用于我们构建的任何版本(甚至分支)的所有必要工件的正确版本。

我很好奇:你为什么认为这是一种反模式?


0
投票

Subversion 例如有 svn:externals,可用于 import 包含库的另一个目录的内容。外部可以“固定”到特定的修订版。对我来说,这是一个更好的方法,您可以避免嵌套工作副本


0
投票

如果您使用的是像 Git 这样的 DVCS 系统,那么如果您将这些库签入源代码管理,您可能会遇到性能问题,这是完全正确的。 作为参考,我们将几个带有签入二进制文件的大型项目(2-5GB)从 Perforce 迁移到了 Git。 导入的 Git 存储库(在使用 SSD 的强大 Windows 机器上使用 Git 1.9)的性能对于开发来说太慢了。 我们调整了我们的构建,从私有 Nexus 实例中提取大部分依赖项,并且显着精简的存储库(50-200MB 源代码)似乎表现良好。

如果您已经有一个可用的 Nexus 实例,那么没有什么可以阻止您使用它来存储 .NET 工件 - 就 Nexus 而言,工件只是一个文件。 如果您将 DLL 和配置文件等压缩到一个文件中,Nexus 很乐意将其托管为版本控制工件,并且您可以在需要时将其下载/解压缩到正确的位置。 (我没有使用过Artifactory,所以我无法评论它的作用。)

如果您想要专门与 VisualStudio(或 MonoDevelop)集成的东西,那么

NuGet

似乎是现在正在出现的答案。 默认情况下,有一个中央 NuGet 源,对阅读没有访问限制。 对于托管,您似乎可以提交要在那里托管的 OSS/公共二进制文件,如果您想托管专有/私有二进制文件,则有

有关设置您自己的私有 NuGet feed 的说明

如果您有 Nexus 的 Pro 版本,

它声称托管 .NET 工件并允许通过 NuGet 进行访问

,但我没有使用它的经验。

© www.soinside.com 2019 - 2024. All rights reserved.