我们有一个大型项目(解决方案),其中包含一些使用一些通用程序集(没有GAC)的小型项目。每次更改项目并且必须进行测试时,解决方案中的所有文件都必须部署在与主分支分开的测试位置。 我想只部署已更改的文件,并使用未从主分支更改的文件。像这样:
[MainBranchFolder]
.....
[Branch1子文件夹]
因此,Branch1仅包含File2.dll。当程序运行时,它将查找当前文件夹中的任何dll,如果没有找到,将查看Parent文件夹。 我知道这个问题的解决方案需要一些代码更改,但我想知道是否可以使用仅配置
来实现这样的事情[编辑]我看到几个ppl建议了一些源代码管理。但是,这不是源代码问题,而是二进制代码问题。我的示例中的MainBranch不是源代码,是我项目中包含所有已编译程序集(exe和dll)的文件夹
答案 0 :(得分:1)
答案 1 :(得分:1)
使用Team Foundation Server,您可以使用自定义构建执行此操作。
答案 2 :(得分:0)
所有回复似乎都有代码版本主题,我看到的并不是您想要的。
我遇到了一个不同但可能类似的情况:
3个应用程序,每个应用程序都需要相同的库。 发布主应用程序需要更新其他2。 GAC不是一个选项(不要问!)
解决方案1:我知道它在哪里,只要给我该死的东西! (这也让我存储了主安装程序所规定的各种有用的常用设置。)
我的解决方案是维护一个已知的注册表项:
第1部分:注册表项
HKLM \ Software \ FoobarInternational \ CommonLibrary1 [String]
在CommonLibrary1中,我存储了公共DLL的路径。
第2部分:常见的“找到我的dll”库
认为插件架构 - 它在dll的当前dir中查找,如果失败,则检查提供的注册表项是否正确位置。
解决方案2:散步
以类似于解决方案1的方式,库在其当前目录中启动,查找DLL,如果找不到,则检查更高的1目录。
以下是一些可以帮助您解决问题的链接:
如果你想让代码的当前目录运行(注意:如果代码在一个单独的dll中,你将得到那个dll的位置!)
Assembly.GetExecutingAssembly()。位置
或取决于您的需要。 。
string directoryName = new FileInfo(Assembly.GetExecutingAssembly().Location).DirectoryName;