Pregunta

De ¿Puedo crear 2 o más dlls desde el proyecto C # en Visual Studio 2008? , tengo otra idea para crear solo 1 gran proyecto. Después de eso, separo una dll del proyecto (que contiene muchas clases) en 1 dll por clase utilizando el evento posterior a la compilación para llamar al proyecto de la aplicación Win (para separar una dll grande). ¿Cómo hacer esto?

Además, también necesito administrar el archivo adjunto en una DLL grande.

Actualizar ¿Encontré algún truco que podría guiarme para resolver este problema mediante creación personalizada ? Además, creo que puedo crear un controlador personalizado que genere un archivo de ensamblaje dinámico utilizando un archivo de módulo separado & amp; al.exe. Pero esta función está por encima de mi expectativa y es poco común (el código fuente rara vez se cambia).

Asambleas de varios archivos: qué y cómo

Cómo construir un ensamblado de varios archivos

Asamblea personalizada de varios archivos de POCO y ReSharper

Gracias ,

¿Fue útil?

Solución 3

Este problema se resuelve con un script personalizado para MSBuild que se explicó en otra pregunta.

<ItemGroup> 
  <Compile Include="Class1.cs"> 
    <Plugin>true</Plugin> 
  </Compile> 
  <Compile Include="Class2.cs" /> 
  <Compile Include="Class3.cs"> 
    <Plugin>true</Plugin> 
  </Compile> 
  <Compile Include="Program.cs" /> 
  <Compile Include="Properties\AssemblyInfo.cs" /> 
</ItemGroup> 

¿Visual Studio un proyecto con varios dlls como salida?

Gracias a @franko_camron por la sugerencia.

Otros consejos

Solo ... ¿por qué? Tener muchos archivos DLL puede tener un impacto en el rendimiento del inicio de la aplicación (debido a " fusión "). También inmediatamente sufrirá bastante por las referencias circulares, lo que es algo malo .

Dado que el código .NET (de manera predeterminada) recibe JIT cuando se usa por primera vez, no hay un gran impacto en tener clases adicionales en un archivo DLL que no se usan en esa aplicación. Simplemente se sientan allí, en silencio, sin molestar a nadie.

El costo total de administración de tener una DLL por clase hará que la implementación, etc. sea insoportable .

En general, no puedo pensar en una razón sensata para hacer esto ...

La respuesta que obtendrá aquí no es diferente de la respuesta en la otra pregunta: ponga un proyecto separado para cada dll por separado .

Lo que quiero preguntarte es cuál es tu comprensión de la definición de una "clase" es. Probablemente, una clase por DLL significa que no está muy familiarizado con cómo funcionan los ensamblados, los espacios de nombres y las clases.

Díganos, ¿qué es lo que realmente quiere poder hacer? Porque lo que crees que deberías estar haciendo para resolver ese problema (por ejemplo, crear una DLL por clase) no es práctico.

Actualizar

Teniendo en cuenta el contexto de su requisito (por ejemplo, la aplicación web de Silverlight), mi conclusión es que dividir sus clases en varias DLL no dará lugar a una mejora del rendimiento en una página web de ASP.NET porque:

  • Las DLL solo las utiliza el servidor, no se descargan a través de HTTP a su navegador
  • Una vez que una aplicación web carga un archivo DLL, no lo volverá a cargar, independientemente de cuántos usuarios utilicen su sitio al mismo tiempo. Una instancia de DLL por servidor.
  • Cuando inicie su aplicación web, cargará todas las DLL que dependía para compilar, ya sea que las use o no.

Entonces, con sus requisitos, probablemente es mejor NO usar Silverlight para su aplicación, considerando el límite de ancho de banda. Las avenidas que puedes explorar son:

  • Aprendizaje de técnicas AJAX, específicamente JSON, (y probablemente no ASP.NET AJAX y su UpdatePanel fácil de usar mal)
  • Aprendiendo a jQuery para encontrar controles que implementarán en JavaScript lo que quieres hacer con Silverlight
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top