【问题标题】:.NET framework (Uninstallable kind of Application?).NET 框架(可卸载的应用程序?)
【发布时间】:2011-03-08 16:03:55
【问题描述】:

因此,Windows 具有不同版本的 .net 框架,1.0、1.1、2.0、3.0、3.5 以及特定框架的服务包。 现在我的 Windows 有多个版本的上述框架,让我困惑的是这些是可卸载的还是可安装的?如果我只是将 3.5 或 4.0 与 ASP.NET 和 Visual Studio 一起使用,我可以删除旧版本吗?

还有一个问题,windows 是否依赖 .net 框架?我的意思是如果我的机器没有任何 .net 框架,它可以工作吗? :)

【问题讨论】:

  • 只是为了节省空间吗?我认为您可能会通过删除这些程序来破坏一些用旧版本编写的程序。
  • @simendsjo,不是为了节省空间,而是为了了解 .net 框架的机制。

标签: .net asp.net


【解决方案1】:

看了答案,觉得这个话题比较混乱,所以会尝试给出自己的答案。

首先,您对 .NET Framework 版本的称呼是什么?事实上,它可能意味着几件事:

  1. 添加/删除程序中的东西(卸载程序在Windows 7下的程序和功能中)控制面板项或打开或关闭 Windows 功能列表中的内容。

  2. 已安装的组件集。

  3. 当您想要安装 .NET Framework 时,您将从 Microsoft 网站下载的安装程序可执行文件。

  4. CLR。有关详细信息,请参阅 Nate Brosssimendsjo 在此页面上发布的答案的精彩评论。

根据您所说的 .NET Framework 版本,答案会有所不同。

  1. 卸载程序打开或关闭Windows功能中,您可能会找到一两个最新版本。目前,我将 .NET Framework 3.5.1 作为“Windows 功能”,将 .NET Framework 4.0 作为“卸载程序”。我不希望这里有任何其他版本,因为为 .NET Framework 2.0 编译的程序将在具有 .NET Framework 3.5 的机器上运行良好。作为证明,编译一个面向 .NET Framework 2.0 的 Hello World 并启动它:它启动了。

  2. C:\Windows\Microsoft.NET\Framework 中,您宁愿找到从 1.0.3705 到 4.0 的所有版本。为什么?因为框架的每个新版本都在旧版本的基础上增加了功能,而不是重写所有内容。在这里,我强烈建议不要删除目录 v2.0.50727。用 Visual Studio 2010 编写并编译为使用 .NET Framework 4.0 运行的最新程序可能仍然需要 2.0 组件。

  3. 下载 .NET Framework 安装程序可执行文件时,您不必考虑旧版本,也不必下载从 1.0 到 4.0 的每个版本。只下载最新的就可以了。

注意:必须了解不同的版本不是独立的,而是从旧版本更改或添加一些内容。这就是对 .NET Framework 程序集的引用的所有内容。例如,您可能遇到一种奇怪的情况:使用 WCF(WCF 在 .NET 3.0 中发布)的基本应用程序在仅安装了 .NET Framework 2.0 的机器上运行良好,但在以下情况下崩溃尝试执行与 WCF 相关的操作:程序集是按需加载的,因此在您需要 .NET Framework 3.0 的组件之前,将使用旧版本的组件。

希望这能让事情更容易理解。

还有一个问题,Windows 是否依赖 在.net 框架上?我的意思是我的 机器工作,如果它没有任何 .net 框架? :)

操作系统本身不需要 .NET Framework 即可正常运行。但有些组件需要 .NET Framework。正如 ChrisF 所说,Microsoft XPS Viewer/Printer 就是一个例子。 Microsoft Live Writer 是另一个。

【讨论】:

  • 我不相信这是 100% 正确的。现在检查 XP VM 以确认,但我相信如果您只安装了 4.0,并且您编译到 3.5 或更低版本将无法运行。
  • 好吧,没关系。显然我以某种方式搞砸了我在虚拟机上的 .NET 安装。 3.5 的卸载程序在大约 70% 的过程中崩溃。去女士! :p
  • :p 祝你好运。好吧,在写答案之前,我快速测试了在我的机器(Win7、.NET 3.5 和 4.0)上运行面向 .NET 2.0 的 Hello World,并且程序运行良好。现在,对于在纯 .NET 4.0 环境中运行的 .NET 3.5 应用程序,结果可能有所不同。
  • 好的,终于搞定了。 Windows XP,卸载 3.5,卸载 3.0,卸载 2.0。安装4.0。执行编译为 .NET 3.5 的控制台应用程序会显示以下消息框:“要运行此应用程序,您首先必须安装以下 .NET Framework 版本之一:v2.0.50727 您想下载并安装 v2.0.50727 的版本吗? .NET 框架?”
  • 好的,我明白了(我希望)。请参阅 Nate Brosssimendsjo 发布的答案的精彩评论。事实上,我使用 .NET 3.5 和 4.0 测试了一个 .NET 2.0 应用程序。 “FX 3、3.5 和 3.5SP1 也与 CLR 2.0 并排”,所以对我来说效果很好。另一方面,“FX 4 与 CLR 4 并排”,因此在您的情况下,缺少 CLR 2.0,因此无法启动依赖它的应用程序。
【解决方案2】:

如果您安装了最新的框架(4.0),则无需安装previos 版本。我不确定您是否可以在安装最新框架后删除已安装的 previos 版本:我不确定添加/删除程序控制面板小程序是否显示该版本。

第二个问题:Windows Vista 和 Windows 7 中很少有应用程序依赖于 .NET 框架,但 Windows 本身不依赖。

【讨论】:

    【解决方案3】:

    虽然 .NET 框架的不同版本是独立的,但某些应用程序要求它们都存在于一台机器上:

    如果您在 Windows XP 或 Windows Server 2003 上安装 Microsoft XPS Viewer(需要 Microsoft .NET Framework 3.0)并且没有安装以前版本的 .NET Framework(1.1 和 2.0),系统会要求您下载它们在安装过程中。 (45 MB)

    Source

    还有一个问题,windows 是否依赖 .net 框架?我的意思是如果我的机器没有任何 .net 框架,它可以工作吗? :)

    XP 肯定不会——它比 .NET 早了几年。

    Vista 和 Windows 7 包含 .NET 3,因此从某种意义上说,它们确实依赖它,但由于它是一项您可以关闭的功能(感谢 MainMa),但没有。

    【讨论】:

    • “但由于框架是操作系统的一部分,你不能不安装它”:你确定吗? .NET Framework 3 是操作系统的一部分,但与其他一些部分一样,它位于 打开或关闭 Windows 功能 列表中,因此我希望它能够被删除(否则它会不在此列表中,不是吗?)。
    • @MainMa - 好点 - 我无法访问 Vista 或 7 机器进行仔细检查。
    【解决方案4】:

    刚刚找到this

    注意大多数时候,您可以使用最新版本的 .NET Framework 来运行使用早期版本的 .NET Framework 创建的应用程序。

    所以我认为最好离开他们。但话又说回来......你安装了多少个 1.0 程序? :)

    【讨论】:

    • Framework 和 CLR 有不同的版本。即 FX 2.0 在 CLR 2.0 旁边;但 FX 3、3.5 和 3.5SP1 也在 CLR 2.0 旁边。 FX 4 与 CLR 4 并列。因此删除旧版本是一个坏主意。
    【解决方案5】:

    如果我没记错的话,3.5 需要 2.0 和 3.0。

    4.0 可以独立存在。

    我认为 1.1 也取决于 1.0。

    我确定 XP 不依赖任何 .NET 框架来运行,但我不确定 Vista/7

    编辑:

    刚刚在 XP 虚拟机上做了一些测试。有趣的结果...仅安装了 2.0 和 4.0,我就能够运行编译为 3.5 的控制台应用程序。但是,如果我使用 LINQ(或者我怀疑任何不在 2.0 中的库),它会在调用该方法时崩溃。如果不调用使用 LINQ 的代码,它不会崩溃。

    仅安装了 4.0,没有其他任何东西,同一个应用程序在运行时会给出以下消息:

    要运行此应用程序,您首先 必须安装以下之一 .NET Framework 版本:

    v2.0.50727

    您要下载并安装吗 .NET v2.0.50727 版本 现在框架?

    单击“是”会打开下载 .NET 的页面...但它是 .NET 4.0 下载页面...

    【讨论】:

    • 这意味着每个框架 1.1、2.0、3.5... 都依赖于其他版本运行并且它们之间有连接。早些时候,我一直认为所有版本都独立存在并存在于它们自己的“家”中。
    • 是的。我不确定 1.0/1.1,但如果你没有框架并且安装 3.5,它也会安装 2.0 和 3.0。 3.0 和 3.5 建立在 2.0 之上,而 4.0 则独立于其他版本。但是,只有 4.0 意味着您只能运行为 4.0 而不是以前的 .net 版本编译的应用程序
    • @Zai 在虚拟机上添加了一些测试结果
    猜你喜欢
    • 1970-01-01
    • 2011-05-21
    • 2017-01-13
    • 2021-05-04
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多