【问题标题】:When does the .NET framework need to be installed on a client machine?什么时候需要在客户端机器上安装 .NET 框架?
【发布时间】:2015-10-07 08:25:56
【问题描述】:

在构建 C# 应用程序时,我不完全确定何时需要在客户端计算机上安装 .NET 框架。

比如说有一个这样的控制台应用程序:

using System;
using System.IO;
using System.Windows.Forms;

namespace HelloWorld{
    class Hello {
        static void Main() {                    
             MessageBox.Show("Hello World.");
        }
    }
}

客户端是否需要安装 .NET 运行时?这可以通过包含 System.Windows.Forms.dll 并将其合并到 exe 中来绕过吗?

谢谢

【问题讨论】:

  • 是的,始终需要 .NET 框架。 System.Windows.Forms 是一个 .NET 程序集,因此静态链接到它(以某种方式)将无济于事。但是,现在几乎可以保证安装某些版本的 .NET。见:en.wikipedia.org/wiki/.NET_Framework#Versions
  • 是的,如果你知道你支持的操作系统版本,你通常可以定位框架的一个版本并确保它可以工作(就我个人而言,我发现自己的目标是 2-3.5)用于无框架安装的兼容性,具体取决于受众。也就是说,创建一个捆绑框架的安装程序通常相当简单,如果不是微不足道的话
  • 感谢您的回答,所以如果我以 .NET 3.5 为目标,如果我正确理解公共语言基础结构,我应该与 W7、8、8.1 和 10 具有开箱即用的兼容性,正确? (假设我没有进行任何 4 次以上的依赖调用。)
  • 如果你想制作这样一个简单的应用程序并最大限度地减少依赖项,.NET 可能不是要走的路。
  • 与 Java 虚拟机不同,您不能将 .NET Framework 复制到 Windows。

标签: c# .net windows


【解决方案1】:

必须安装.NET Framework。即使您将 .NET 框架的一部分嵌入到您的程序集中(例如,使用 Fody/Costura)或将它们作为 DLL 包含在内,.NET 框架程序集也几乎永远不会是独立的。例如,System.Windows.Forms.dll 将引用System.Windows.Forms.dll 外部的 .NET 框架部分。

幸运的是,.NET 框架通常默认安装在 Windows 上,因此为了方便起见,您可以只针对特定版本的 Windows。例如,我通常以 4.0 为目标并假设用户运行的是 Windows 7 SP1 或更高版本。任何拥有最新 Windows 7 的人都应该运行 SP1,因为它是 Windows 更新。

下表列出了 .NET 版本适用于哪个操作系统 (source)。

Windows Version | Default .NET
==============================
XP              | None
Vista           | 3.0
7               | 3.5
7 SP1           | 4.0
8               | 4.5
8.1             | 4.5.1
10              | 4.6

如果您需要知道如何更改目标框架,try this link。基本上,转到项目属性并更改“目标框架”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2020-11-11
    • 2011-10-08
    • 1970-01-01
    • 2015-10-13
    相关资源
    最近更新 更多