2011-01-26 18 views
23

Tengo algunas preguntas generales sobre web.config y cómo funciona con respecto a la referencia de ensamblaje. He estado jugando con el nuevo motor de visualización Razor y tuve algunos problemas para ponerlo en funcionamiento.Agregar referencia de ensamblado dentro de web.config

Mi problema empezó con un general

El tipo o espacio de nombre no existe 'XXXXX' en el espacio de nombres 'XXXXX' (¿falta una asamblea referencia?)

Ahora pensé que esto era solo un simple Agregar referencia al proyecto y que estaría en camino. Pero incluso después de que agregué una referencia al ensamblaje que faltaba, mi proyecto no dejaba de funcionar.

Encontré la solución, y tuve que agregar una referencia de ensamblado dentro del web.config. Una vez que hice esto, todo funcionó bien.

Primero, quiero entender por qué fue necesario agregar una referencia a web.config para solucionar este problema. ¿Por qué una referencia de proyecto no era lo suficientemente buena?

Segundo, cuando se trata de agregar referencias en web.config, me gustaría entender la sintaxis. Cuando veo markup como esto

<add assembly="System.Web.WebPages" />

parece muy claro para mí que estoy añadiendo una asamblea System.Web.WebPages con nombre. Sin embargo, la sintaxis completa en mi web.config es

<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Versión parece explicarse por sí misma, pero lo que es la cultura y PublicKeyToken utiliza? ¿Se requieren? ¿Qué sucede si no conozco a ninguno de ellos? ¿Puedo poner algo?

Respuesta

7

responder a sus primera pregunta:

Hay otro SO pregunta aquí una respuesta útil:

What is difference between web.config assemblies element and project file Reference element

Esencialmente es que ver con las diferencias entre los proyectos Web y proyectos no web en Visual Studio (como yo lo entiendo).

responder a sus segundo pregunta:

Esto tomó un poco de excavar alrededor, pero aquí van:

Cultura - la mayoría de las asambleas debe ser cultural neutra (suponiendo que esto se establece en la solicitud) Sin embargo, si tiene ensamblajes sensibles a la cultura, aquí es donde especifica la cultura del ensamblado.

PublicKeyToken - esta es la clave pública del par de claves públicas/privadas que se utilizó para firmar el ensamblaje. Tener esto permite que .NET verifique que el ensamblaje que está cargando sea el correcto.

Más información útil aquí:

http://en.wikipedia.org/wiki/.NET_assembly

3

una vieja cuestión, ya ha respondido, pero me encontré con él y quería añadir:

La importancia de un token de clave pública es que es absolutamente necesario para una asamblea fuertemente nombrada. De hecho, así es como obtienes un PKT: Firma el ensamblado (genera una clave de nombre fuerte). Y no puede almacenar un ensamblaje en el GAC sin firmarlo.

Por lo tanto, es más que solo cuestión de identificar el ensamblaje ... es una forma criptográfica para que .NET valide la firma de un ensamblaje y para garantizar que no haya sido alterado.

0

Todo el mundo parece estar dando la "vuelta" con esta respuesta. Es simple:

<configuration> 
    <system.web> 
     <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"> 
      <assemblies> 
       <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
      </assemblies> 
     </compilation> 
    </system.web> 
</configuration> 
+0

Esta respuesta no responde a las preguntas del OP: ¿para qué sirve CultureKeyToken y Culture? ¿Se requieren? ¿Qué sucede si no conozco a ninguno de ellos? ¿Puedo poner algo? –

Cuestiones relacionadas