gpt4 book ai didi

c# - 使用绝对路径构建依赖项

转载 作者:行者123 更新时间:2023-11-30 04:19:20 28 4
gpt4 key购买 nike

目前我们使用 Source Safe 并开始迁移到 Subversion。所有外部 SDK(> 500 MB)现在都保存在 Source Safe 中,我正在寻找将它们从 VSS 中移出的方法到一些存储库。

我们有 C++(大部分)、C#(很多)、Java(很少)项目。数百个项目。仅限 Windows 平台。

我有几个依赖管理器但不满意:

  • NuGet - 适用于 .Net 但不适用于 C++
  • Ivy - 没有深入研究,但似乎不适合 C++

第一个问题:我还能检查什么?它应该易于最终开发人员使用。最佳案例 - 在 IDE 中进行简单构建。


目前我倾向于下一个解决方案:

分配一些很少使用的驱动器,如 S: 并将其声明为“DEV HOME”。

然后在此处放置外部组件:

S:\SDK\boost\1.30\...
S:\SDK\boost\1.45\...
S:\SDK\oracle\agile_9.0.0.0\...
S:\SDK\IBM\lotus_8.0\...
S:\SDK\IBM\lotus_9.0\...
S:\Tools\NuGet\nuget.exe
S:\Tools\clr\gacutil.exe

Autobuild 机器将保存此“DEV HOME”的原版。每个开发人员都应该将必要的 SDK 从自动构建机器复制到本地,并使用 subst 创建磁盘。

我找不到这个解决方案的大问题:

  • 分支机构。不同分支的项目可以包含对不同版本SDK的引用(例如boost)
  • 外部组件的版本不会变化太频繁,所以这里不会有数百个,比如说,boost 版本。
  • 易于开发者设置。
  • 任何工具都支持的绝对路径。
  • 如果您想为源文件使用不太大的 SSD 驱动器,则磁盘空间没有问题。 (目前,我借助符号链接(symbolic link)将我的外部设备移动到单独的驱动器。但对于其他开发人员来说,这看起来像是黑魔法)

小问题:

  • 就我个人而言,这不是一个很好的解决方案。
  • 磁盘 (S:) 可能很忙
  • 不能在 Linux 中使用(但目前我们对此不感兴趣)

第二个问题:这个方案有哪些问题?


更新 1:为什么不是相对路径。

  1. externals 是否应该与 sources root 位于同一个目录中? :

:

externals/...
branch-root-1.0/project_collection_1/project1/...
branch-root-2.0/project_collection_2/...

这里所有的项目都应该在一个地方或者重复的外部项目。似乎与具有绝对路径的解决方案没有太大区别。

  1. Externals 应该与源代码根目录在同一个文件夹中吗? :

:

branch-root-1.0/externals/...
branch-root-1.0/project_collection_1/project1/...
branch-root-1.0/project_collection_2/...
branch-root-2.0/externals/...

然后外部将在每个 checkout 的分支中重复。这 +500MB 用于每个分支结账 + 一些额外的设置工作。

嗯,这看起来可以接受,但我看不出它比绝对路径更好。真的,我想知道相对路径的优点,因为我也不太习惯绝对路径。

最佳答案

我已经走上了你的道路......它可以工作。但是,我建议您将所有内容设为相对路径,并花时间根据相对路径对您的项目进行排序。

任何固定目录系统和源代码控制的问题是您可以分支或多次 check out 您的项目。

此外,虽然 subversion 很好,但值得考虑使用 Mercurial 或 Git。它们允许许多不同类型的工作流程,而 Subversion 不允许。考虑如何构建您的存储库需要更多的工作,但这是非常值得的。这是 sourcesafe 的一大飞跃,根据我的经验,许多来自 sourcesafe 的人最初真的很挣扎/不喜欢 subversion/git/mercurial。它们都要求您更详细地了解版本控制,但这是一件好事,因为它是一个非常好的工具。

关于c# - 使用绝对路径构建依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15893474/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com