【问题标题】:Why does referncing earlier .net versions work on my local machine but not on another?为什么引用较早的 .net 版本在我的本地计算机上有效,而在另一台计算机上无效?
【发布时间】:2011-02-21 16:29:47
【问题描述】:

我有 winforms 应用程序。当我查看参考文献时,它们都是 .net 4(与应用程序相同),除了一个写着 v2.0 的参考文献。我可以在本地运行应用程序并使用 .net 组件中的功能,但是一旦我将应用程序带到另一台机器上,它就不会启动。显然,当找不到参考时会发生这种情况。

我很困惑为什么这会在本地工作。我已经检查了 GAC,并且引用的 dll 仅存在 .net 2.0 版本。?...

在 .net 上从旧版本重新引用 dll 的规则是什么?

【问题讨论】:

  • 听起来 .NET 4 不在“其他”机器上。

标签: c# .net


【解决方案1】:

在同一台机器上运行两个版本的框架是非常好的。 .NET 2 和 .NET 4 是否都安装在您正在测试的第二台机器上?我怀疑他们不是。

【讨论】:

  • 是的。这就是为什么我很困惑。可以从 .net 4.o dll 或项目中引用 .net 2.0 dll 吗?
【解决方案2】:

是的,您可以从 .Net 4.0 项目中引用 .Net 2.0 dll。

您可能只引用了 .Net 2.0 dll,但您的目标框架可能是 .Net 4.0,它可能在您的其他计算机上不可用。

要更正此问题: 打开您的项目属性。 将目标框架设置为 .Net Framework 2.0 或 4.0。

如果将其设置为 4.0,则必须在要运行它的机器上安装 4.0。

查看机器上安装了哪些版本的最快方法: 打开 VS 命令提示符并键入 clrver。 (当然你需要 .Net SDK)

要查看您的应用使用哪个框架,请输入 clrver 您可以从任务管理器中获取您的应用程序(在进程选项卡中,单击查看->选择列->检查 PID)

从 .NET 4.0 开始,您的应用可以在同一进程中针对不同 AppDomain 中的多个框架。

请记住,您的应用程序的框架是自动确定的,但您可以覆盖此默认行为。一种方法是我上面描述的。

【讨论】:

    【解决方案3】:

    请注意,.Net 2.0 和 .Net 4.0 之间的 GAC 位置已更改。您很可能在您的机器上安装了这两个版本,并且您已经查看了 2.0 GAC。

    第二台机器很可能没有安装 2.0,因此运行失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 2017-11-01
      • 1970-01-01
      • 2011-03-30
      • 2011-04-06
      • 1970-01-01
      相关资源
      最近更新 更多