0

我们有一个大项目(解决方案),其中有几个使用一些通用程序集(无 GAC)的小项目。每次更改项目并且必须进行测试时,解决方案中的所有文件都必须部署在测试位置,与主分支分开。我只想部署已更改的文件并使用主分支中未更改的文件。像这样的东西:

[主分支文件夹]

  • 文件1.dll
  • 文件2.dll
  • 文件3.dll
  • ......

  • [Branch1 子文件夹]

    • 文件2.dll

因此,Branch1 仅包含 File2.dll。当程序运行时,它将在当前文件夹中查找任何 dll,如果没有找到,将查找父文件夹。我知道这个问题的解决方案需要一些代码更改,但我想知道这样的事情是否可以仅使用配置来实现

[编辑] 我看到几个人建议一些源代码管理。但是,这不是源代码问题,而是二进制代码问题。我的示例中的 MainBranch 不是源代码,是一个包含我项目中所有已编译程序集(exe 和 dll)的文件夹

4

3 回答 3

1

听起来您可以使用一些软件配置管理(SCM)!

那里有很多选择,快速的谷歌搜索会发现很多。我的偏好肯定是 GIT。

查看: http: //git-scm.com/

于 2013-10-10T20:10:37.970 回答
1

使用 Team Foundation Server,您可以使用自定义构建来做到这一点。

于 2013-10-10T20:13:03.577 回答
0

所有的回复似乎都有一个代码版本控制主题,我看到的不是你想要的。

我遇到了一个不同但可能相似的情况:

3 个应用程序,每个都需要相同的库。发布主应用程序需要更新其他 2 个。GAC 不是一个选项(不要问!)


解决方案1:我知道它在哪里,给我该死的东西!(这也让我存储了由主安装程序指定的各种有用的常用设置。)


我的解决方案是维护一个已知的注册表项:

第 1 部分:注册表项

HKLM\Software\FoobarInternational\CommonLibrary1 [字符串]

在 CommonLibrary1 中,我存储了公共 DLL 的路径。

第 2 部分:常见的“查找我的 dll”库

考虑插件架构 - 它在当前目录中查找 dll,如果失败,则检查提供的注册表项的正确位置。


解决方案2:散步


以与解决方案 1 类似的方式,库从其当前目录开始,查找 DLL,如果未找到,则检查更高的 1 个目录。


这里有一些链接可以帮助您:

或者取决于你需要什么。.

string directoryName = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName;  
于 2013-10-10T22:18:01.957 回答