【发布时间】:2019-01-04 21:39:48
【问题描述】:
我们有一个多项目解决方案。项目之间的引用作为项目引用而不是程序集引用(正如人们所期望的那样)完成。这适用于我们的部署,但会创建特定于版本的运行时依赖项。问题是我们想开始创建仅更新已更改的特定 dll 的热修复安装程序。更新所有 dll 不适合我们当前的客户情况。
项目引用的“特定版本”属性已禁用,除了切换到程序集引用和使用 csproj 中的选择块根据构建配置在调试/发布箱之间切换之外,我无法找到解决方法。
是否有其他替代方法允许在运行时使用任何版本?
【问题讨论】:
-
app.config 文件应该能够将调用从一个版本重定向到另一个版本。你试过吗?
-
@ChrisDunaway 说得好。我们将重定向用于其他一些事情,也可以在这里使用它。我还没有验证它是否适用于这种情况,但我认为它会。不过,我希望能够有效地免维护(例如针对程序集引用的 SpecificVersion=false 设置)
-
所有的程序集都被强命名了吗?
-
你关注的是错误的问题,你仍然需要一个知道用户安装的这些 DLL 的版本的魔术八球。 IDE 或 MSBuild 中没有内置任何东西来提供该 oracle,您必须自己跟踪它。也没有什么微妙的,忘记增加 [AssemblyVersion] 是一个非常基本的事故。由构建工程师推送更新的专用部署服务器是常用方法。这使您的“当前客户情况”完全是您的问题,而不是他的问题,就像它应该的那样。
-
这有点模棱两可,应该是客户的问题。他们的 IT 人员应该推送更新,通常是在审查和测试更改之后。如果他们不想拥有这个员工,那么一定要让他们为你的员工买单:)
标签: c# .net visual-studio dll