【问题标题】:C# dll strong version issueC# dll 强版本问题
【发布时间】:2012-12-21 20:05:48
【问题描述】:

我四处搜索,但找不到我的 dll 问题的解决方案。
我的解决方案添加了许多 dll 引用,并且每个 dll 都强烈依赖于版本。
我只想单独重新编译其中一个并将其添加回解决方案。
但是,由于其他 dll 依赖于版本并引用此 dll 一些 发生运行时错误,说明版本不是预期的版本。
我该如何解决这种情况?

【问题讨论】:

  • 你能澄清一下吗?例如,您可以说您有程序集 A 引用程序集 B 和 C,程序集 B 也引用程序集 C,如果您只重新编译程序集 C 和 A,则它不起作用。
  • 解决方案编译。当我只重新编译单个 dll 并将其放回文件夹时会发生此问题。

标签: c# .net dll runtime


【解决方案1】:

这实际上取决于您如何制定解决方案。如果您在 same SOLUTION 中将 DLL 作为 PROJECT,作为使用它们的程序和其他 DLL 文件,您只需右键单击要重新编译的 DLL 项目,然后单击重建。 p>

希望对您有所帮助!

【讨论】:

  • 所有 dll 都添加为没有项目的程序集引用。
【解决方案2】:

Assembly redirection publisher policy 配置文件中的条目可以解决这个问题。这是文章中示例的 sn-p(您也可以重定向版本范围):

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="myAssembly" 
          publicKeyToken="32ab4ba45e0a69a1" culture="en-us" />
        <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
        ....

旁注:您应该更仔细地考虑您的版本政策。如果您将程序集提供给其他人,最好避免自动生成的版本,并为每个正式版本使用一个版本,可能为临时构建使用次要版本。同时构建所有项目可能是个好主意。

【讨论】:

  • 我刚刚阅读了这篇文章,出版商政策对我来说是新事物。在哪里可以找到这个文件?
  • @Chris,对于 exe -“EXE_NAME.exe.config”,对于 asp.net 网站:“web.config”。请注意,您不能为assembly/class library 指定配置,它必须是application
  • 但是这种重定向机制需要将dll放入GAC。仅仅强大的名字是不够的。
  • @linquize,据我所知,该策略适用于普通搜索路径和 GAC 程序集,但如果我错了,我不会感到惊讶。确认您的陈述的链接会很有用。
猜你喜欢
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-30
  • 1970-01-01
相关资源
最近更新 更多