代码之家  ›  专栏  ›  技术社区  ›  Josh Stodola

更新生产asp.net网站bin文件夹中的dll

  •  12
  • Josh Stodola  · 技术社区  · 15 年前

    我想更新生产web应用程序中的类库(单个dll文件)。此Web应用程序已预编译(发布)。我在stackoverflow上读到了一个答案(很抱歉,由于搜索功能不能很好地工作,似乎找不到它了),这使我相信我可以将新的dll粘贴到bin文件夹中,并且可以毫无问题地提取(这将导致wp循环使用,这是很好的因为我们不使用inproc会话状态)。

    但是,当我尝试执行此操作时,我的站点将崩溃,并给出一个fileloadexception,说明程序集清单定义与程序集引用不匹配。这到底是什么?!在visual studio中更新dll并重新部署整个站点工作得很好,但这在后面是一个巨大的痛苦。如果必须重新部署整个站点以实现任何更改,那么使用单独的dll有什么意义?

    问题是:如何在不破坏应用程序和不重新部署所有文件的情况下更新生产网站上的dll?

    3 回复  |  直到 15 年前
        1
  •  9
  •   Dillie-O    15 年前

    要记住的是 网站 Web应用程序 就visual studio和aspnet而言。

    网站通常会将所有aspx和vb文件发布到live服务器,aspnet工作进程会在每次演示之前重新编译应用程序。

    另一端是web应用程序,在这个应用程序中,所有代码隐藏文件都被编译成一个dll文件,您只需部署aspx页面,然后将文件夹和dll文件一起放入生产环境中。

    还有一种“混合动力”叫做 Precompiled Web Sites “(请参阅官方msdn概述的链接)其中您没有web应用程序的单个dll布局,但网站的所有编译工作都是为您完成的。根据您的需要,有几种“模式”。

    在我看来,您的错误是由于您的站点被设置为具有某种预编译的网站而导致的。使用预编译的模型稍微“严格”一点,因为它假设有某些文件/签名。由于预编译需要文件的名称和版本,更新dll文件版本会导致中断。

    如果可能的话,您最好的选择是转换成一个web应用程序,因为您可以毫无问题地将其他dll添加到生产环境中。否则,看看 this matrix 查看应用程序需要何种形式的预编译。

        2
  •  1
  •   Community CDub    8 年前
        3
  •  0
  •   citronas    15 年前

    看看你的推荐信。它是否说“特定版本=真”?将其设置为false,重新发布应用程序(必须执行一次,因为现在应用程序仍在查找具有特定清单的程序集),然后重试。