【问题标题】:Updating a DLL in a Production ASP.NET Web Site bin folder更新生产 ASP.NET 网站 bin 文件夹中的 DLL
【发布时间】:2011-02-03 00:07:29
【问题描述】:

我想更新生产 Web 应用程序中的类库(单个 DLL 文件)。此 Web 应用程序已预编译(已发布)。我在 StackOverflow 上阅读了一个答案(抱歉,似乎无法再找到它,因为搜索功能不能很好地工作),这让我相信我可以将新的 DLL 粘贴到 bin 文件夹中,它会被选中没有问题(这会导致 WP 回收,这对我来说很好,因为我们不使用 InProc 会话状态)。

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

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

【问题讨论】:

  • 顺便说一下,这是 Visual Studio 中的“网站”。不确定这是否会有所不同。

标签: asp.net deployment assemblies reference fileloadexception


【解决方案1】:

要记住的是,就 Visual Studio 和 ASPNET 而言,存在 网站Web 应用程序

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

另一端是 Web 应用程序,您的所有文件背后的代码都被编译为单个 DLL 文件,您只需部署您的 aspx 页面并将包含 DLL 文件的 bin 文件夹用于生产。

还有一个称为“Precompiled Web Sites”的“混合”(请参阅​​官方 MSDN 概述的链接),其中您没有 Web 应用程序的单个 DLL 布局,而是网站的所有编译工作为你完成。根据您的需要,有几种“模式”。

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

如果可能,最好的办法是转换为 Web 应用程序,因为您可以毫无问题地将额外的 DLL 添加到生产环境中。否则,请查看this matrix,了解您的应用程序需要哪种形式的预编译。

【讨论】:

  • +1 谢谢,这是一个很好的答案。我对 Web 应用程序转换过程仍然有些困惑。 “转换为 Web 应用程序”究竟涉及什么?再次感谢!
  • 您应该能够右键单击项目文件并选择“转换为 Web 应用程序”,它会为您完成该过程。
  • 我的解决方案资源管理器上下文菜单中没有“转换为 Web 应用程序”选项。我有VS2008专业版。我不是盲人,它根本不存在!我需要某种附加组件吗?谢谢。
  • 我相信该选项在项目的上下文菜单中,而不是解决方案。在那里试试。
  • @Dillie 我已经尝试了所有方法,但我根本没有“转换为 Web 应用程序”选项。我一直在寻找是否有一些特殊版本的 VS 或者我没有安装的服务包或其他东西,但似乎我在所有方面都是最新的!
【解决方案2】:

看看你的参考。它是否说“特定版本= true”?将其设置为 false,重新发布您的应用(您必须执行一次,因为现在您的应用仍在寻找具有特定清单的程序集)并重试。

【讨论】:

  • 在哪里可以找到这个“特定版本”?
  • 在参考属性中。展开引用,右键点击具体引用,点击属性。
  • 我找不到你在说什么。这是一个网站,而不是一个网络应用程序。
  • 嗯,你先说“网络应用”。那么我的 awswer 不适用于你的情况。
  • 嗯,它本身就是一个 Web 应用程序。但是 Visual Studio 决定提出自己的愚蠢术语来迷惑所有人。根据 VS,这是一个网站。
【解决方案3】:

看看这篇 SO 帖子,可能就是您所指的。 The located assembly's manifest definition does not match the assembly reference

【讨论】:

  • 不是那个。它有一个答案,大意是“是的,只需将您的新 DLL 放到 bin 文件夹中,它就会回收应用程序池并被拾取。”这是一个被接受的答案,并且已经被投票了几次。我对有关 FileLoadException 的答案发表了评论。
猜你喜欢
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-24
  • 1970-01-01
相关资源
最近更新 更多