12

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

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

欢迎任何建议。

4

5 回答 5

3

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

于 2014-06-27T21:59:10.007 回答
1

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

于 2010-06-11T12:46:06.483 回答
0

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

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

于 2010-02-16T07:07:25.240 回答
0

(我知道这是一个老问题,但我通常基于 Java 的团队正在做一些 .NET 工作并提出相同的问题,这就是我们发现的。)

如果您使用的是像 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 源的说明

如果您有 Nexus 的 Pro 版本,它声称托管 .NET 工件并允许通过 NuGet 访问,但我没有使用它的经验。

于 2014-06-21T16:09:22.133 回答
0

例如,Subversion 具有svn:externals可用于将另一个目录的内容与您的库一起导入。外部可以固定到特定的修订。对我来说,这是一种更好的方法,并且您可以避免嵌套工作副本

于 2010-02-17T06:48:33.427 回答