none
asp.net bin下的dll有特定的版本限制么? RRS feed

  • 问题

  • 比如我有一个asp.net的website,还有一个dll用来写具体算法等,website利用reference调用这个dll,发布并运行ok。

    然后,dll内容有改动(结构没有变化),重新编译后放到website的bin下面,运行失败,说是dll的什么key有变动,无法加载。如果也重新编译website的话是可以运行的,但这样似乎也就失去了独立dll的意义,有什么好办法么?


    霸王
    • 已移动 孟宪会Moderator 2010年6月12日 1:55 (发件人:.NET Framework 一般性问题讨论区)
    2010年6月9日 5:23

答案

  • 你好!

         你用LoadFile方法加载的时候可以只看文件名的,其他方式一定要检查版本等信息的!

         为了解决这个问题,微软提供了一些机制,来重定向程序集版本,具体可以参考:

    http://msdn.microsoft.com/zh-cn/library/7wd6ex19.aspx


    周雪峰
    • 已标记为答案 Jimt200010 2010年6月12日 4:01
    2010年6月10日 11:35
    版主

全部回复

  • 你好 如果是单独引用应该是不会有问题的,是不是你在web.config对dll进行了相应版本的控制以及公钥等的配置
    I see you~http://hi.baidu.com/1987raymondMy Blog~~~
    2010年6月9日 7:46
    版主
  • 你好!

         长名(程序集名,文化,版本,公钥标记)中任何变化都会导致CLR无法定位这个程序集!

         你重新添加引用应该可以解决!


    周雪峰
    2010年6月9日 11:16
    版主
  • 长名(程序集名,文化,版本,公钥标记)中的版本肯定是要变的,webconfig里没有任何相关的内容,但接口什么的是不变的,理论上通过反射来加载是可行的,但感觉没必要这么麻烦,而且用反射的话无法在编程时得到提示,很不方便。

    发布之后显然没有办法修改引用了。。。

    有什么办法可以让程序只看dll的文件名而忽略版本之类的信息么?


    霸王
    2010年6月10日 1:17
  • 你好!

         你用LoadFile方法加载的时候可以只看文件名的,其他方式一定要检查版本等信息的!

         为了解决这个问题,微软提供了一些机制,来重定向程序集版本,具体可以参考:

    http://msdn.microsoft.com/zh-cn/library/7wd6ex19.aspx


    周雪峰
    • 已标记为答案 Jimt200010 2010年6月12日 4:01
    2010年6月10日 11:35
    版主
  • ok,虽然还没时间仔细看,不过相信会是一个好的解决方案,先结帖了


    霸王
    2010年6月12日 4:00