c# - 如何使用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 函数,但是在我能够找到的任何地方都没有描述如何指向特定的目标目录和源目录,也没有找到任何示例。
编辑:每个模块都可以单独提取并独立于根项目工作。我不能只使用根。该死,我什至无法对这个问题做出敌对的回应!
解决方案
build
在“根”文件夹中创建一个文件夹并用于relative path
引用解决方案中的项目,然后将其所有项目配置output folder
为build\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 references
,relative path
并将它们配置为"Copy to local"=true
对于许多项目,我们将使用构建后或构建前事件从某个地方加载或复制文件,所有这些都必须是相对路径。
推荐阅读
- javascript - 将函数限制为仅使用“new”运算符调用
- node.js - 共享会话 Socket.io Express
- vba - 宏按钮在 Excel 中添加行(带有下面行中的公式),同时保持标题
- arrays - 在已知片段中拆分数组
- c++ - UWP:在 TreeNode 中将文本设置为粗体
- vba - 发现重复值时,VBA 计数并打印每个单元格地址
- awk - 如何增加文本文件中的时间戳
- ios - 避免与 clang-formatter 混合使用意图?
- php - PHP 路由的性能和安全性
- html - 刷新数据时发生异常] 根本原因 java.io.IOException: Stream closed