2011-02-12 13 views
8

Actualmente estoy desarrollando una aplicación para .NET 4 Client Profile, ya que esta es la versión que estará presente en la mayoría de las computadoras hogareñas a través de Windows Update..NET Framework 4 Client Profile + System.Web.dll?

Sin embargo, no puedo agregar una referencia a System.Web.dll ya que no existe en esta versión, ¿qué debo hacer?

¿Es una buena idea implementar System.Web.dll junto con mi aplicación, o no funcionará? Realmente necesito conexiones HTTP y todo, así que no puedo modificar mi aplicación como una solución alternativa. ¿Dirigir mi aplicación a .NET 4 (sin perfil de cliente) puede ser una posibilidad o simplemente no funcionará en computadoras con solo el perfil de cliente?

+3

** No implemente 'System.Web.dll' como un archivo independiente con su proyecto. ** Exija al usuario que instale el .NET Framework completo. Incluya esto en su instalador y a nadie le importará. –

Respuesta

5

NET 4 Client Profile, ya que esta es la versión que estará presente en la mayoría de los ordenadores personales través de Windows Update

En realidad no. .NET 4 (perfil de cliente o no) actualmente no está presente en ninguna instalación previa a Windows 10 de forma predeterminada. Por ejemplo, Windows 7 viene con .NET 3.5 SP1, no con .NET 4.0. Puede haber una actualización de Windows, pero es opcional.

Por lo tanto, también puede orientar el marco .NET 4 completo.

El enlace entre los sistemas operativos y las versiones de .NET Framework se puede encontrar en here. Las marcas de verificación indican que una versión está disponible de fábrica, y el signo significa que puede instalarse.

También tenga en cuenta que 4.5, 4.6 y 4.6.1 son todas las actualizaciones in situ, lo que significa que un sistema con cualquiera de ellos también se considera que tiene 4.0.

+0

Debo haber entendido mal eso entonces - gracias. – pimvdb

+1

Lo ve en "Actualizaciones opcionales". Y ese es el perfil de cliente de afaik 4.0. –

2

Si tiene como objetivo .NET 4.0 y no .NET 4.0 Client Profile, debe agregarlo como prerequisite. Esto permitirá que se instale cuando instale su aplicación.

Puede seguir utilizando Sockets si ejecuta .NET 4.0 Client Profile, se encuentran en System.Net. Usted solamente desea System.Web cuando se aplica lo siguiente:

El espacio de nombres System.Web suministros clases e interfaces que permiten la comunicación navegador y el servidor. Este espacio de nombres incluye la clase HttpRequest , que proporciona información extensa sobre sobre la solicitud HTTP actual; la clase HttpResponse, que administra la salida HTTP al cliente; y la clase HttpServerUtility, que proporciona acceso a las utilidades y procesos del lado del servidor . System.Web también incluye clases para la manipulación de cookies , transferencia de archivos, información de excepción y control de caché de salida.

+0

Aparece un error que indica que el tipo 'HttpCookieCollection' no se puede encontrar, incluso después de agregar' System.Net.dll'. De todos modos, ¿existe la posibilidad de implementar 'System.Web.dll' junto con mi aplicación? – pimvdb

+0

Puede tener otras dependencias también. Cambie el marco de destino a .NET 4.0 (completo) en lugar de Perfil del cliente. –

2

Incluso si implementa la copia del System.Web.dll al cliente que no resolverá el problema. Y el problema es que no se puede vincular a los ensamblados compilados para el perfil .NET 4 (no el cliente) del ensamblado que se compiló para el perfil del cliente .NET 4. La única solución es dirigir su ensamblaje al perfil no del cliente.

El MSDN Page about .NET Framework Client Profile.

2

Si se acaba de querer usar el HttpWebRequest, que está disponible en el perfil de cliente para .Net 4.

He aquí un ejemplo que puede probar, basta con crear una nueva aplicación de consola utilizando el cliente .NET 4 perfil y pega esto en 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(); 
     } 
    } 
} 

Usted preguntó por HttpCookieCollection en uno de sus comentarios. Parece que HttpWebRequest usa un CookieContainer para almacenar las cookies.

Cuestiones relacionadas