项目管理(有点)
本文关键字:有点 项目管理 | 更新日期: 2023-09-27 18:34:53
我们有一个大项目(解决方案(,有几个使用一些通用程序集(没有GAC(的小项目。每次更改项目并必须进行测试时,解决方案中的所有文件都必须部署在独立于主分支的测试位置。我只想部署已更改的文件,并使用主分支中未更改的文件。像这样:
[主分支文件夹]
- 文件1.dll
- 文件2.dll
- 文件3.dll
-
.....
-
[分支 1 子文件夹]
- 文件2.dll
因此,分支 1 仅包含 File2.dll。当程序运行时,它将查找当前文件夹中的任何dll,如果未找到,它将查找父文件夹。我知道这个问题的解决方案需要一些代码更改,但我想知道是否可以仅使用配置来实现这样的事情
[编辑] 我看到几个人建议一些源代码管理。但是,这不是源代码问题,而是二进制代码问题。在我的示例中,MainBranch 不是源代码,是一个文件夹,其中包含我的项目中所有已编译的程序集(exe 和 dll(
听起来您可以使用一些软件配置管理(SCM(!
有很多选择,快速的谷歌搜索会发现很多。我的偏好绝对是 GIT。
退房: http://git-scm.com/
使用 Team Foundataion Server,您可以使用自定义构建来做到这一点。
所有响应似乎都有一个代码版本控制主题,我看到这不是您要找的。
我遇到了一个不同但可能类似的情况:
3 个应用程序,每个应用程序都需要相同的图书馆员。发布主应用程序需要更新其他 2 个应用程序。GAC 不是一个选项(不要问!
解决方案1:我知道它在哪里,只要给我该死的东西!(这也让我存储了由主安装程序指示的各种有用的通用设置。
我的解决方案是维护一个已知的注册表项:
第 1 部分:注册表项
HKLM''Software''FoobarInternational''CommonLibrary1 [字符串]
在 CommonLibrary1 中,我存储了公共 DLL 的路径。
第 2 部分:常见的"查找我的 dll"库
考虑插件架构 - 它在当前目录中查找 dll,如果失败,则检查提供的注册表项是否正确位置。
解决方案 2:散步
与解决方案 1 类似,库从其当前目录开始,查找 DLL,如果未找到,则检查更高的 1 个目录。
以下是一些链接,可帮助您解决每个问题:
-
获取父目录
-
找到程序集后使用它
-
与注册表交谈
-
如果你想运行代码的当前目录(注意:如果代码在单独的dll中,你将得到那个dll的位置!
Assembly.GetExecutingAssembly((.位置
或者取决于你需要什么。
string directoryName = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName;