.NET Framework 4 Профиль клиента + System.Web.dll? - PullRequest
9 голосов
/ 13 февраля 2011

В настоящее время я разрабатываю приложение для .NET 4 Client Profile, поскольку эта версия будет присутствовать на большинстве домашних компьютеров через Центр обновления Windows.

Однако я не могу добавить ссылку на System.Web.dll поскольку его нет в этой версии - что мне делать?

Это хорошая идея для развертывания System.Web.dll вместе с моим приложением, или это не сработает?Мне действительно нужны HTTP-соединения и все, поэтому я не могу изменить свое приложение в качестве обходного пути.Возможно ли нацеливание моего приложения на .NET 4 (без профиля клиента) или оно просто не будет работать на компьютерах, на которых установлен только профиль клиента?

Ответы [ 4 ]

7 голосов
/ 13 февраля 2011

Профиль клиента 4 NET, так как это версия, которая будет присутствовать на большинстве домашние компьютеры через Windows Update

Не совсем. .NET 4 (профиль клиента или нет) в настоящее время не присутствует ни в одной предустановленной Windows 10 версии по умолчанию. Например, Windows 7 поставляется с .NET 3.5 SP1, а не .NET 4.0. Может быть обновление Windows, но это не обязательно.

Следовательно, вы также можете использовать целевую платформу .NET 4.

Связь между операционными системами и версиями .NET Framework можно найти здесь . Галочки указывают, что версия доступна из коробки, знак плюс означает, что ее можно установить.

Также обратите внимание, что 4.5, 4.6 и 4.6.1 - все обновления на месте, это означает, что система с любым из них также считается имеющей 4.0.

3 голосов
/ 22 сентября 2011

Если вы просто хотите использовать 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 голосов
/ 13 февраля 2011

Если вы нацелены на .NET 4.0, а не на .NET 4.0 Client Profile, вы должны добавить это как обязательное условие .Это позволит установить его при установке приложения.

Вы по-прежнему можете использовать Сокеты , если вы запускаете .NET 4.0 Client Profile, они расположены в System.Net.Вы только хотите System.Web, если применимо следующее:

Пространство имен System.Web предоставляет классы и интерфейсы, которые обеспечивают связь между браузером и сервером.Это пространство имен включает в себя класс HttpRequest, который предоставляет обширную информацию о текущем HTTP-запросе;класс HttpResponse, который управляет выводом HTTP клиенту;и класс HttpServerUtility, который предоставляет доступ к утилитам и процессам на стороне сервера.System.Web также включает в себя классы для обработки файлов cookie, передачи файлов, информации об исключениях и управления кэшем вывода.

2 голосов
/ 13 февраля 2011

Даже если вы развернете копию System.Web.dll на клиенте, это не решит проблему.И проблема в том, что вы не можете ссылаться на сборки, скомпилированные для профиля .NET 4 (не клиента), из сборки, скомпилированной для профиля клиента .NET 4.Единственное решение состоит в том, чтобы нацелить вашу сборку на профиль не клиента.

Страница MSDN о клиентском профиле .NET Framework .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...