项目管理(有点)

本文关键字:有点 项目管理 | 更新日期: 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;