代码之家  ›  专栏  ›  技术社区  ›  testalino

修改程序集版本和引用(.NET)

  •  2
  • testalino  · 技术社区  · 15 年前

    我在一个文件夹中有一个应用程序exe加上3个引用的程序集。编译于VS2010,clr 4.0。

    我想修改所有4个程序集的版本以匹配(1.0.0.0),并修改每个程序集中的引用节以匹配新版本号。

    在应用程序已经在IDE之外生成之后,这是否可能?

    编辑:

    这里是一个场景:我们的DLL通常安装在具有特定版本的GAC中。只有在发布商用产品时,版本才会增加。我们有许多自己编写的开发工具,它们使用安装在GAC中的一些DLL。这些工具是在某个点上生成的,而不是在代码更改后重新生成的。但是,clr更喜欢从gac加载程序集,而不是从本地程序集加载程序集,因此我们的工具多次不使用与它们一起生成的程序集。这是一个巨大的问题,我不知道如何解决它否则。

    3 回复  |  直到 15 年前
        1
  •  2
  •   Alex Paven    15 年前

    使用 Reflector 及其插件 Reflexil ;当然,如果签署了程序集,它们将不再一起工作(实际上我认为它们根本不工作?)否则你甚至不需要修改我认为的引用。

    编辑:而且,马克是绝对正确的;无法想象什么情况下绝对需要你这样做,这是非常黑客。

        2
  •  0
  •   Marc Gravell    15 年前

    最简单的选择是简单地重建和重新部署。在config中可以做一些事情( runtime/assemblyBinding/dependentAssembly/bindingRedirect 但这似乎太过分了,因为我不知道你会怎么做。 更改程序集的版本号 不重建它们,特别是如果它们被签名/strong命名(运行时将检测到作恶者)。

    听起来像是在工作…

    如果DLL是您的,只需使用正确的版本meta重新构建它们。如果他们 不是 你的,也许别跟他们开玩笑。

        3
  •  0
  •   Polyfun MicBehrens    15 年前

    听起来你需要一个 publisher policy 或A binding redirect . 这将使程序集始终使用最新版本,或使用引用程序集的特定版本。