.NET Framework 4客户端配置文件+System.Web.dll是什么?

9
我目前正在开发一个.NET 4客户端框架的应用程序,因为这个版本将通过Windows Update存在于大多数家庭计算机上。
然而,我无法添加对System.Web.dll的引用,因为它在这个版本中不存在 - 我该怎么办?
是否将System.Web.dll与我的应用程序一起部署是一个好主意,或者这样做行不通?我真的需要HTTP连接等所有功能,所以我不能修改我的应用程序来解决问题。将应用程序定位到.NET 4(没有客户端框架)可能是一个选择,还是只有具备客户端框架的计算机才能使用?

3
不要将 System.Web.dll 作为独立文件与您的项目一起部署。要求用户安装完整的 .NET Framework。将其包含在您的安装程序中,这样就不会有人关心了。 - Cody Gray
4个回答

7

由于.NET 4客户端框架将通过Windows更新出现在大多数家用计算机上,因此需要使用这个版本。

事实并非如此。.NET 4(无论是客户端框架还是完整版)目前在任何预装Windows 10之前的安装中都不会默认出现。例如,Windows 7带有.NET 3.5 SP1,而不是.NET 4.0。可能会有Windows更新,但这是可选的。

因此,您最好针对完整的.NET 4框架。

操作系统和.NET框架版本之间的链接可以在这里找到。勾号表示版本可以直接使用,加号表示可以安装。

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


1
你可以在“可选更新”中找到它。那是目前为止的4.0客户端框架。 - Filip Ekberg

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();
        }
    }
}

您在其中一条评论中提到了HttpCookieCollection。似乎HttpWebRequest使用CookieContainer来存储cookie。


3
如果您的目标是.NET 4.0而不是.NET 4.0客户端框架,则应将其添加为先决条件。这将允许在安装应用程序时安装它。
如果运行.NET 4.0客户端框架,仍然可以使用Sockets, 它们位于System.Net. 只有当以下情况适用时,才需要使用System.Web
引用:

System.Web命名空间提供了启用浏览器服务器通信的类和接口。此命名空间包括HttpRequest类,该类提供有关当前HTTP请求的详细信息; HttpResponse类,它管理向客户端的HTTP输出;以及HttpServerUtility类,它提供对服务器端实用程序和进程的访问。System.Web还包括用于cookie操作、文件传输、异常信息和输出缓存控制的类。


我收到一个错误,指出找不到类型为 HttpCookieCollection - 即使已经添加了 System.Net.dll。无论如何,是否有可能将 System.Web.dll 与我的应用程序一起部署? - pimvdb
它可能还有其他依赖项。将目标框架更改为.NET 4.0(完整版)而不是客户端配置文件。 - Filip Ekberg

2
即使您将 System.Web.dll 的副本部署到客户端,也无法解决问题。问题在于:您无法从为 .NET 4 客户端配置文件编译的程序集中链接到为 .NET 4 配置文件(非客户端)编译的程序集。唯一的解决方案是将您的程序集针对非客户端配置文件进行定位。 .NET Framework 客户端配置文件的 MSDN 页面

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接