visual una true studio rutas referencias referencia redirects que puedo autogeneratebindingredirects autogenerate agregar administrador acceso visual-studio assemblies web-config dependencies

una - ¿Cómo evitar que Visual Studio agregue ensamblados a mi web.config?



que es una referencia en visual basic (16)

Bueno, esto podría parecer un pirateo, pero dadas sus necesidades, otra opción sería cargar dinámicamente el conjunto Avatar utilizando Assembly.Load o LoadFrom en tiempo de ejecución. Esto mantendría una referencia fuera del proyecto principal y luego evitaría las líneas de referencia adicionales en web.config. Sin embargo, esto solo sería realmente práctico si solo estuvieras usando una pequeña cantidad de clases del proyecto Avatar. Haría un tercer proyecto al que ambos proyectos hacían referencia que contenía interfaces que una o más clases de Avatar implementaron para que el proyecto principal mantenga una tipificación estricta al manejar las instancias de Avatar. Admito que esto podría ser mucho más trabajo que las respuestas enviadas anteriormente. Si estás interesado en este método, busca en google para crear complementos en .Net

Cada vez que construyo o publico un sitio web, Visual Studio intenta revisar el archivo web.config para que pueda agregar numerosos ensamblajes que no son necesarios.

En otras palabras:

web.config antes:

<configuration> <system.web> <compilation> <assemblies> </assemblies> </compilation> </system.web> </configuration>

web.config después de:

<configuration> <system.web> <compilation> <assemblies> <add assembly="Microsoft.ReportViewer.Common... /> <add assembly="Microsoft.ReportViewer.WinForms... /> <add assembly="System.DirectoryServices... /> <add assembly="System.Windows.Forms... /> <add assembly="ADODB... /> <add assembly="System.Management... /> <add assembly="System.Data.OracleClient... /> <add assembly="Microsoft.Build.Utilities... /> <add assembly="Microsoft.ReportViewer.ProcessingObjectModel... /> <add assembly="System.Design... /> <add assembly="Microsoft.Build.Framework... /> </assemblies> </compilation> </system.web> </configuration>

Ninguno de estos conjuntos es necesario, y la mayoría no existe en los servidores de prueba o producción de destino.

Sigo eliminándolos cada vez que construyo, pero se está volviendo muy molesto muy rápido.

En este momento, mi solución es dejar web.config de solo lectura, por lo que Visual Studio no puede agregarle ensamblados.

Actualizar

Capturas de pantalla como prueba:

Páginas de propiedades del proyecto antes :

texto del enlace http://i26.tinypic.com/206c46c.jpg

Web.Config antes de:

texto alt http://i31.tinypic.com/30rr728.jpg

Páginas de propiedades del proyecto después de:

texto alt http://i27.tinypic.com/25a3z2x.jpg

Web.config después de:

texto alt http://i32.tinypic.com/2pq6w4w.jpg

Actualización dos

Cabe señalar explícitamente que el sitio web funciona sin que se agreguen estas referencias extrañas. Mi solución provisional es mantener web.config solo para lectura y presionar Cancelar cuando Visual Studio se queja de que es solo de lectura cuando intenta modificarlo. Si puedo evitar que Visual Studio intente modificarlo en primer lugar ...

Actualización tres

Parece que no es posible. Alguien puede sentirse libre de dar la respuesta correcta: " No puedes evitar que Visual Studio agregue ensamblados a tu web.config ". y lo marcaré.

La única razón por la que mantengo la pregunta es que, con suerte, alguien conozca la opción súper secreta, la clave de registro, el proyecto o la configuración de la solución, para decirle a Visual Studio que deje de pensar.

Actualización cuatro

No acepté la respuesta aceptada, y la aceptaría si pudiera. Todavía estoy esperando la panacea. Pero ahora mismo me estoy inclinando hacia:

  • Respuesta: no se puede hacer ( manu08 )
  • Solución: clave de registro de ensamblajes de GAC filtrada ( Nebakanezer )

¿Cómo evito que Visual Studio agregue ensamblados a mi web.config?

Referencias


Comenzaría por verificar las declaraciones de "uso" en sus archivos de código, así como cualquier referencia en sus archivos .aspx, .ascx. Parece que ha hecho referencia a algunos de estos (Sé que algunos se agregan de forma predeterminada desde las plantillas de Agregar nuevo elemento).


Convierta su proyecto "Sitio web" en un proyecto "Aplicación web".

Un "sitio web" no tiene un archivo de proyecto, por lo que contiene todas las referencias de ensamblaje en web.config. Un "Proyecto Web" tiene un archivo de proyecto, y todas las referencias se almacenan en el archivo de proyecto.


Eliminar las referencias.

  • Si es una aplicación web: puede ver las Referencias en el Explorador de soluciones .

  • Si es un sitio web: haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione Páginas de propiedades . Administrarlos allí.

HTH


Esos son todos los ensamblajes requeridos por su proyecto, de alguna forma o forma, y ​​la ayuda de la compilación que ASP.NET hace en sus páginas en tiempo de ejecución. Probablemente los esté importando el código que esté usando en su proyecto u otra biblioteca que los esté usando.

Pero de acuerdo a la documentation . Estos son los ensamblados definidos en su web.config global que se pueden encontrar en C:/Windows/Microsoft.NET/Framework/v2.0.50727/CONFIG :

<assemblies> <add assembly="mscorlib" /> <add assembly="System, ..." /> <add assembly="System.Configuration, ..." /> <add assembly="System.Web, ..." /> <add assembly="System.Data, ..." /> <add assembly="System.Web.Services, ..." /> <add assembly="System.Xml, ..." /> <add assembly="System.Drawing, ..." /> <add assembly="System.EnterpriseServices, ..." /> <add assembly="System.Web.Mobile, ..." /> <add assembly="*" /> </assemblies>

Si miras hay una referencia assembly="*" está agregando. Y si lees la documentation sobre este comando dice:

Opcionalmente, puede especificar el carácter comodín de asterisco (*) para agregar cada ensamblaje dentro del caché de ensamblado privado para la aplicación, que se encuentra en el subdirectorio / bin de una aplicación o en el directorio de instalación de .NET Framework (% systemroot% / Microsoft.NET / Framework / version).

Esto significa que ya se incluirá cualquier ensamblaje en su directorio / bin o en el directorio de instalación de .NET Framework.

Lo que esto me dice acerca de su problema es que los ensamblajes que se están incluyendo ya están referenciados de alguna manera a su proyecto. Y probablemente provengan de la Avatar Dot Net Library o de algunos controles en su página. Consulte la carpeta "Referencias" en su proyecto de Visual Studio en la Biblioteca de Avatar para obtener las referencias que no desea. Porque ahí es donde el proceso de construcción obtiene estas bibliotecas.

En otras palabras, si no desea que se incluyan, elimine los proyectos de referencia de todas las referencias de estas bibliotecas.

Alternativamente, puede usar un analizador XML de MSBuild para eliminar esa sección de web.config cada vez que ejecute el proceso de compilación. Personalmente, uso una tarea llamada XmlUpdate para modificar ciertas partes de mi web.config para que esté lista para la producción. Si desea hacer lo mismo, es parte de las tareas de la comunidad de MSBuild .


Mientras esté utilizando un sitio web, en lugar de una aplicación web, no conozco ninguna forma de evitar que Visual Studio agregue ensamblados a su web.config. Este mismo problema de tipo también sucede con las soluciones de mi empresa.


No creo que pueda evitar que Visual Studio agregue automáticamente referencias a ensamblajes a los que otros hacen referencia.

Una solución es crear un proyecto de instalación web con una acción personalizada que automatice la eliminación de estas referencias de ensamblaje no deseadas de web.config .


No puede evitar que Visual Studio agregue ensamblados a su web.config.


Quizás la "Biblioteca DotNet de Avatar" está haciendo referencia a esos ensamblajes por sí misma. Las referencias de un ensamblado al que se hace referencia son necesarias para implementar correctamente un proyecto. De lo contrario, ¿cómo podría funcionar el montaje referenciado?

Tenga en cuenta que es posible que su ensamblaje al que se hace referencia no use sus propias referencias, aunque existen.

Editar: Puedes usar la gran herramienta ".Net Reflector" para verificar esto.


Sé y aprecio por qué Microsoft inventó los sitios web en ASP.NET 2.0, pero a veces simplemente apesta . Si es práctico para usted, convierta su sitio en un Proyecto de Aplicación Web, y problemas como éste desaparecerán.

Si eso no es práctico para usted, intente re-factorizar tanto código como sea posible en un proyecto de biblioteca de clases por separado. Cualquier referencia que pueda mover fuera del sitio web y dentro de la biblioteca de clases reducirá los cambios de web.config .

EDITAR: Para aclarar, en un sitio web, el compilador aspnet compila todo (marcado, código subyacente, el lote), por lo que todas las referencias de ensamblaje deben ir a web.config . Sin embargo, en un proyecto de aplicación web, el compilador C # o VB compila los archivos de código subyacente en una DLL separada, a la que luego hace referencia el compilador aspnet cuando compila el marcado. En este escenario, los ensamblajes a los que solo se hace referencia en los archivos de código subyacente entrarán en la DLL de código subyacente y no tocarán web.config en absoluto. Solo los ensamblajes a los que se hace referencia directamente en el marcado entrarán en web.config .



Si un conjunto compartido hace referencia a ellos, también se agregarán al proyecto de llamada.

Dado que la biblioteca de Avatar hace estas otras referencias, Visual Studio también agrega estas referencias al proyecto principal. De lo contrario, una llamada a la biblioteca de Avatar podría fallar ya que falta la referencia que necesita.


Tuve este problema con Visual Studio 2005 (pero me complace informar que la solución funciona para VS 2008, vea el texto en negrita a continuación). Hay una sección de registro que comprueba VS antes de agregar ensamblajes al archivo web.config.

Aquí está la clave:

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/8.0/Projects/{E24C65DC-7377-472B-9ABA-BC803B73C61A}/FilteredGACReferences

Entonces, digamos que no desea que Visual Studio agregue el ensamblado Microsoft.VisualStudio.Designer.Interfaces a su web.config. Agregue la siguiente entrada a su registro y estará listo.

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/8.0/Projects/{E24C65DC-7377-472B-9ABA-BC803B73C61A}/FilteredGACReferences/Microsoft.VisualStudio.Designer.Interfaces

Funcionó perfectamente para mí. Y sí, el resto de tu equipo tendrá que hacer lo mismo, pero al menos no tienes que eliminar manualmente las entradas cada vez que lo hagas :)

Para hacer que funcione para VS 2008, simplemente cambie el 8.0 en la ruta del registro a 9.0


Usé VS2005 para editar un .net 1.1 (VS2003) .aspx y lo guardé, entonces el web.config misteriosamente tendrá la red. Montajes 2.0 agregados:

Si usé VS2008 o VS2010, esto no sucede. Así que creo que esto es un error en el IDE VS2005.


vea http://msdn.microsoft.com/en-us/library/ms178728.aspx

allí se explica que lo que se ve en la Página de propiedades no es todo, las referencias implícitas también existen en el archivo Machine.config y se agregan en el momento de la compilación. Espero que esto ayude.


Lo sentimos, no puedes evitar que Visual Studio agregue ensamblados a tu web.config , pero no todo está perdido.

He golpeado esto en el pasado; alguien ha agregado algunas referencias (incluido WinForms) a un ensamblaje de acceso a datos de bajo nivel. El sitio web utilizó el ensamblaje de acceso a datos de bajo nivel y, por lo tanto, se agregaron WinForms, etc., al archivo web.config.

La solución fue mover su código al ensamblaje correcto y eliminar la referencia incorrecta.

Si no puede ordenar el ensamblaje que tiene las referencias no deseadas y sabe que no está llamando a un código que depende de las referencias no deseadas. Entonces puedes (ninguno de estos es bueno)

  • Escriba una acción de instalación personalizada que automatice la eliminación de estas referencias de ensamblaje no deseadas de web.config
  • Escriba una acción MSBUILD personalizada para eliminarla en el momento de la compilación
  • Use un archivo web.config escrito a mano diferente cuando se instale la aplicación.

Puede llevar siglos descubrir por qué Visual Studio agrega una referencia al archivo web.config. Debe revisar manualmente CUALQUIER conjunto que se utilice directamente o indirectamente en el sitio web.