首页 > 解决方案 > 如何使用sharpsvn正确生成复杂的外部结构?

问题描述

我有一个使用颠覆的非常复杂的存储库结构。这在很大程度上与我团队的限制、安全要求和项目的依赖关系有关。因此,此处使用的结构不是可选的,也不能更改。

存储库结构由以下模式组成:

root-|- main -|- branches
     |        |- tags
     |        |- trunk - main - plugins
     |
     |- modules -| - module1 -|- branches
                 |            |- tags
                 |            |- trunk - module1 - plugins - plugin1
                 |            |- modules - ...
                 |
                 | - module2 -|- branches
                 |            |- tags
                 |            |- trunk - module2 - plugins - plugin2
                 |            |- modules - ...

每个外部的来源是一个 pluginX 文件夹。目标是trunk下一层的plugins文件夹(或main的plugins文件夹)。不幸的是,API 的文档几乎不存在。我怀疑我需要以某种方式使用 propset 函数,但是在我能够找到的任何地方都没有描述如何指向特定的目标目录和源目录,也没有找到任何示例。

编辑:每个模块都可以单独提取并独立于根项目工作。我不能只使用根。该死,我什至无法对这个问题做出敌对的回应!

标签: c#sharpsvnexternals

解决方案


build在“根”文件夹中创建一个文件夹并用于relative path引用解决方案中的项目,然后将其所有项目配置output folderbuild\xxx folder,所有输出文件夹也是relative path如此。并在主程序中,再次使用相对路径配置程序集绑定。使用这种模式,无论谁下载 repo,他们都可以将项目编译到相同的根文件夹,并使用相同的配置进行调试。

对于非常复杂的依赖,比如A=>B=>C=>D,第一次打开解决方案A,如果B/C/D没有编译没有被引用,那么A会显示引用警告,必须打开并编译 B&C&D,然后 A 将工作。但通常情况下,我们应该在解决方案 A 中添加 B/C/D,这样,我们第一次打开它就不会再出现错误了。

有时,某些源代码并没有对所有开发人员开放,因此他们只能获得一个编译好的 dll,对于这些 dll,我们需要另一个文件夹(如“工具”),其中包含源代码服务器中所有编译的程序集。我们在我们的解决方案中添加file referencesrelative path并将它们配置为"Copy to local"=true

对于许多项目,我们将使用构建后或构建前事件从某个地方加载或复制文件,所有这些都必须是相对路径。


推荐阅读