28

Me gustaría utilizar HttpUtility.UrlEncode en una aplicación de consola, VB.NET, VS 2010 Beta 2.HttpUtility.UrlEncode en aplicación de consola

System.Web.HttpUtility.UrlEncode(item) 

mensaje de error: 'HttpUtility' no es un miembro de 'Web'.

En this question Anjisan sugiere añadir una referencia a System.Web, de la siguiente manera:

  1. En el explorador de soluciones, haga clic en referencias
  2. seleccione "Agregar referencia"
  3. En el " cuadro de diálogo Agregar referencia", utilice la ficha .NET
  4. de desplazamiento hacia abajo para System.Web, seleccione esa, y pulsa OK

Sin embargo, no tengo una entrada System.Web en esa ubicación.

+0

http://stackoverflow.com/questions/3840762/how-do-you-urlencode-without-using-system-web –

Respuesta

30

System.Web está ahí, pero parece que Visual Studio no ordena por nombre de manera predeterminada. Tendrá que hacer clic en Component name columna para obtener esa lista ordenada.

fui capaz de ejecutar este código:

Console.WriteLine(System.Web.HttpUtility.UrlEncode(" ")); // + 

Simplemente añadiendo una referencia System.Web, sinSystem.Web.Extensions.

Además, debe reemplazar su marco de trabajo de .NET Framework 4 Client Profile a .NET Framework 4; Vaya a Proyecto >> Propiedades ... >> Pestaña Aplicación

+0

Todavía no puedo encontrarlo. Solo tengo "System.Web.ApplicationServices" y "System.Web.Services". ¿Qué versión de Visual Studio/.NET estás usando? – George

+0

He probado con VS2010b2; ¿has ordenado esa lista? ¿Qué tipo de proyecto, versión de framework definiste? –

+0

Hice ordenar la lista. Es una aplicación de consola. Framework 4.0, versión de tiempo de ejecución v4.0.21006. – George

0

es necesario agregar una referencia tanto System.Web y System.Web.Extensions.

5

@iar, el marco no estaba configurado como "el incorrecto". Las aplicaciones de consola y Windows (hay más) se dirigen a .NET Framework 4 Client Profile de forma predeterminada en Visual Studio 2010. Esto es por diseño. Y sucede cuando apuntas a ".NET Framework 4" en el cuadro de diálogo Nuevo proyecto. Por qué no encontró System.Web.dll se debe a que no forma parte del .NET Framework 4 Client Profile, por lo que el sistema del proyecto no puede encontrarlo y emite una advertencia durante el tiempo de compilación (que probablemente ignoró, lo que le otorga referencia System.Web.dll). No encontrará System.Web.dll en la pestaña .NET en el cuadro de diálogo Agregar referencia, ya que esa lista se filtra de acuerdo con el marco de trabajo específico.

14

Asegúrese de que su marco de destino sea ".NET Framework 4" no ".NET Framework 4 Client Profile".

+1

Esta es la respuesta correcta, pero es posible que deba agregar explícitamente 'System.Web' como referencia (en Proyecto> Agregar referencia) – arserbin3

1

Cambiar el marco de trabajo del proyecto de ".NET Framework 4 Client Profile" a ".NET Framework 4.0" me ayudó, con .NET Framework 4 Client Profile como marco de destino. Pude agregar la versión de System.Web 2.0 al navegar a C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 desde Agregar ventana de referencia pero haciendo lo mismo para System.Web 4.0 dll dio una advertencia.

1

Para proyectos de Visual Basic en Visual Studio 2010, la opción para cambiar el marco de destino de ".NET Framework 4.0 Client Profile" a ".NET Framework 4.0" se encuentra en Proyecto> Propiedades> Compilar> 'Opciones de compilación avanzadas ... '

4

Si está utilizando .NET 4.0 o posterior, puede usar WebUtility.UrlEncode que funciona con el perfil del cliente (no requiere la referencia de ensamblado System.Web).

+0

Esta es la mejor solución. – Freshblood

Cuestiones relacionadas