【问题标题】:How do I know what version of the .net framework I need to build for我如何知道我需要为哪个版本的 .net 框架构建
【发布时间】:2012-08-23 09:53:13
【问题描述】:

我收到了一堆 C# 解决方案。服务器上有生产代码,我在本地开发机器上有一个版本。我进行了代码更改,并构建了 dll。当我尝试将 dll 复制到服务器时,它给了我如下错误:

"Could not load file or assembly 'myfile.dll' or one of its dependencies. 
This assembly is built by a runtime newer than the currently loaded runtime 
and cannot be loaded."

其中一个问题是我用于构建 ORM、数据和业务逻辑的项目不在服务器上,而是在本地,我可以使用它们来构建 dll,但这没有帮助当我无法分辨服务器正在使用什么时。您在哪里可以找到它运行的版本以及如何构建以匹配?我知道这是我自己的无知,不知道 .net 框架是如何工作的、不同的版本、如何为正确的框架构建(32 位与 64 位也是一个问题?)并让事情正常工作。我环顾四周,但似乎没有任何地方可以解释这一点。

【问题讨论】:

  • 我们说的是哪个 IIS 版本?
  • @AndreCalil 通常是 IIS7,有时是 6。我有很多项目都存在这个问题,但大多数项目不需要太多的 dll 构建,最多 html 代码。当他们这样做时,我就会遇到重大问题。

标签: c# .net dll build


【解决方案1】:

32 位或 64 位不应该打扰您。要查找框架版本,您必须在 IIS 中查找网站或虚拟目录。

我这里没有 Windows Server,但它是这样的:

  1. 打开 IIS 管理工具
  2. 找到您的网站或虚拟目录,右键单击并转到属性
  3. 应该有一个名为 .Net(或类似名称)的选项卡
  4. 在此选项卡上,有一个组合,其中包含绑定到 IIS 的可用运行时版本。当前是您正在使用的那个。

这些步骤适用于 IIS 6。对于 IIS 7,它基本相同,但他们不称其为“属性”窗口,而是“高级的东西”。

很抱歉没有正确的详细信息,但您可以找到它。

【讨论】:

  • 在 IIS 中,服务器说 v2.0 经典,但源代码似乎在 web.config 和属性中针对 3.5 或 4.0。这需要匹配吗?
  • 打开Windows资源管理器并指向c:\windows\.Net Framework\Framework。如果有3.5 的文件夹,那么你的目标版本应该是 3.5(注意你的开发机器上的 SP1,服务器可能没有它)。 3.5 运行在 2.0 之上
  • 所以,我可以构建 3.5 dll 以在 2.0 IIS7 服务器上使用,因为 3.5 真的是 2.0 的附加功能?准确吗?
  • .Net 3.5 框架是 2.0 的扩展。即使你把它安装在服务器上并绑定到 IIS,你也不能在 IIS 上选择它,它会显示为 2.0。这就是为什么我让你看一下安装目录C:\Windows\.Net Framework\...
  • 我服务器上的文件夹实际上是 C:\Windows\Microsoft.net\Framework 但是找到 3.5 文件夹并更改我的项目的目标就可以了,谢谢。
【解决方案2】:

在 vs2k10 中更改项目的目标框架:打开项目属性 -> 应用程序选项卡 -> 目标框架(包含可用版本的组合框)

检查/更改服务器上的框架版本(适用于 IIS 7.0 版本):

  1. 打开 IIS 管理器。
  2. 单击“应用程序池”节点。
  3. 找到您的网站/虚拟目录使用的相应应用程序池(默认情况下有一个“DefaultAppPool”应用程序池)。
  4. 右键单击应用程序池,然后选择“高级设置”
  5. 应该有“.NET Framework 版本”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 2021-03-25
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多