【问题标题】:.NET Framework 4 Client Profile + System.Web.dll?.NET Framework 4 客户端配置文件 + System.Web.dll?
【发布时间】:2011-02-12 23:06:00
【问题描述】:

我目前正在为 .NET 4 Client Profile 开发一个应用程序,因为这是通过 Windows 更新出现在大多数家庭计算机上的版本。

但是,我无法添加对 System.Web.dll 的引用,因为它在此版本中不存在 - 我该怎么办?

将 System.Web.dll 与我的应用程序一起部署是个好主意,还是不行?我真的需要 HTTP 连接,所以我不能修改我的应用程序作为解决方法。将我的应用程序定位到 .NET 4(无客户端配置文件)是否有可能或将无法在只有客户端配置文件的计算机上运行?

【问题讨论】:

  • 不要将 System.Web.dll 部署为项目的独立文件。 要求用户安装完整的 .NET Framework。将其包含在您的安装程序中,没有人会关心。

标签: .net dll .net-client-profile system.web


【解决方案1】:

NET 4 客户端配置文件,因为这是 大多数将出现的版本 通过 Windows 更新的家用电脑

不是真的。默认情况下,任何 Windows 10 之前的安装中当前都不存在 .NET 4(无论是否存在客户端配置文件)。例如,Windows 7 附带 .NET 3.5 SP1,而不是 .NET 4.0。可能会有 Windows 更新,但它是可选的。

因此,您不妨针对完整的 .NET 4 框架。

操作系统和 .NET 框架版本之间的链接可以在here 找到。复选标记表示一个版本是开箱即用的,加号表示可以安装。

另请注意,4.5、4.6 和 4.6.1 都是就地更新,这意味着具有其中任何一个的系统也被视为具有 4.0。

【讨论】:

  • 您可以在“可选更新”下看到它。这就是 afaik 4.0 客户端配置文件。
【解决方案2】:

如果您的目标是 .NET 4.0 而不是 .NET 4.0 客户端配置文件,您应该将其添加为 prerequisite。这将允许在您安装应用程序时安装它。

如果您运行 .NET 4.0 客户端配置文件,您仍然可以使用 Sockets,它们位于 System.Net。您在满足以下条件时需要System.Web

System.Web 命名空间提供 使能的类和接口 浏览器-服务器通信。这 命名空间包括 HttpRequest 类,它提供了广泛的 有关当前 HTTP 的信息 要求; HttpResponse 类,它 管理到客户端的 HTTP 输出;和 HttpServerUtility 类,它 提供对服务器端的访问 实用程序和进程。系统.Web 还包括 cookie 的类 操作,文件传输,异常 信息,并输出缓存控制。

【讨论】:

  • 我收到一条错误消息,指出无法找到类型 HttpCookieCollection - 即使在添加 System.Net.dll 之后也是如此。无论如何,是否有可能将System.Web.dll 与我的应用程序一起部署?
  • 它可能还有其他依赖项。将目标框架更改为 .NET 4.0(完整)而不是 Client Profile。
【解决方案3】:

如果您只想使用 HttpWebRequest,可以在 .Net 4 的客户端配置文件中使用它。

这是一个您可以尝试的示例,只需使用 .Net 4 客户端配置文件创建一个新的控制台应用程序并将其粘贴到 Program.cs...

using System;
using System.IO;
using System.Net;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            var request = WebRequest.Create("http://google.com");
            var response = request.GetResponse();
            using (var s = response.GetResponseStream())
            using( var sr = new StreamReader(s))
            {
                Console.Write(sr.ReadToEnd());
            }

            Console.ReadKey();
        }
    }
}

您在其中一个 cmets 中询问了 HttpCookieCollection。看来 HttpWebRequest 使用 CookieContainer 来存储 cookie。

【讨论】:

    【解决方案4】:

    即使您将System.Web.dll 的副本部署到客户端也无法解决问题。问题是:您无法从为 .NET 4 客户端配置文件编译的程序集链接到为 .NET 4 配置文件(不是客户端)编译的程序集。唯一的解决方案是将您的程序集定位到非客户端配置文件。

    MSDN Page about .NET Framework Client Profile

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-12
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多