Pregunta ¿Cuál es la diferencia entre un proyecto compartido y una biblioteca de clases en Visual Studio 2015?


Estaba viendo las nuevas características para Visual Studio 2015 y el proyecto compartido surgió mucho, pero no entiendo cómo es diferente al uso de una biblioteca de clases o una biblioteca de clases portátil. ¿Alguien puede explicar?

Editar: Shared Project es una nueva característica en Visual Studio 2015 y es diferente a una biblioteca de clases portátil. Entiendo lo que es una biblioteca de clases portátil. Lo que trato de entender es cómo un proyecto compartido se diferencia de una biblioteca de clases. Ver el enlace a continuación.

http://www.c-sharpcorner.com/UploadFile/7ca517/shared-project-an-impressive-features-of-visual-studio-201/


196
2018-06-04 04:04


origen


Respuestas:


La diferencia entre un proyecto compartido y una biblioteca de clases es que este último se compila y la unidad de reutilización es el ensamblado.

Mientras que con el primero, la unidad de reutilización es el código fuente, y el código compartido se incorpora a cada conjunto que hace referencia al proyecto compartido.

Esto puede ser útil cuando desee crear ensamblajes separados que se dirijan específico plataformas pero aún tienen un código que debe ser compartido.

Ver también aquí:

La referencia del proyecto compartido aparece bajo el nodo Referencias en el Explorador de soluciones, pero el código y los activos en el proyecto compartido se tratan como si fueran archivos vinculados al proyecto principal.


En versiones anteriores de Visual Studio1, puede compartir el código fuente entre proyectos mediante Agregar -> Artículo existente y luego elegir Enlace. Pero esto fue un poco torpe y cada archivo fuente separado tuvo que ser seleccionado individualmente. Con la movida de soportar múltiples plataformas dispares (iOS, Android, etc.), decidieron facilitar el intercambio de fuentes entre proyectos al agregar el concepto de Proyectos Compartidos.


1 Esta pregunta y mi respuesta (hasta ahora) sugieren que Shared Projects fue una nueva característica en Visual Studio 2015. De hecho, hicieron su debut en Actualización 2 de Visual Studio 2013


198
2018-06-04 08:16



Encontré algo más de información de esto Blog.

  • En una Biblioteca de clases, cuando se compila el código, se generan conjuntos (dlls) para cada biblioteca. Pero con el proyecto compartido no contendrá ninguna información de encabezado, por lo tanto, cuando tenga una referencia de proyecto compartido, se compilará como parte de la aplicación principal. No habrá dlls separados creados.
  • En la biblioteca de la clase solo se puede escribir el código C # mientras que el proyecto compartido puede tener algo como archivos de código C #, archivos XAML o archivos JavaScript, etc.

27
2018-06-04 10:37



Las diferencias en corto son

1) PCL no tendrá acceso completo a .NET Framework, donde lo tiene SharedProject.

2) #ifdef para código específico de plataforma: no puede escribir en PCL (La opción #ifdef no está disponible para usted en una PCL porque se compila por separado, como su propia DLL, por lo que en tiempo de compilación (cuando se evalúa el #ifdef) no sabe de qué plataforma formará parte. ) donde como proyecto compartido puedes.

3) El código específico de la plataforma se logra utilizando Inversion Of Control en PCL, donde al usar declaraciones #ifdef puede lograr lo mismo en el Proyecto compartido.

Un excelente artículo que ilustra las diferencias entre PCL vs Proyecto compartido se puede encontrar en el siguiente enlace

http://hotkrossbits.com/2015/05/03/xamarin-forms-pcl-vs-shared-project/


16
2017-10-30 07:50



Como otros ya escribieron, en resumen:

proyecto compartido
reutilizar en el nivel de código (archivo), lo que permite también la estructura de carpetas y los recursos

pcl
reutilizar en el nivel de ensamblaje

Lo que faltaba en la mayoría de las respuestas aquí para mí es la información sobre la funcionalidad reducida disponible en una PCL: como ejemplo, tiene operaciones de archivo limitadas (me faltaba mucha funcionalidad de File.IO en un proyecto multiplataforma de Xamarin).

Con más detalle
proyecto compartido:
+ Puede usar #if cuando se dirige a múltiples plataformas (por ejemplo, Xamarin iOS, Android, WinPhone)
+ Toda la funcionalidad del marco disponible para cada proyecto objetivo (aunque debe ser compilada condicionalmente)
o Se integra en tiempo de compilación
- Tamaño un poco más grande de ensambles resultantes
- Necesita Visual Studio 2013 Update 2 o superior

pcl:
+ genera un ensamblaje compartido
+ utilizable con versiones anteriores de Visual Studio (actualización anterior a 2013 2)
o vinculado dinámicamente
- funcionalidad aprobada (subconjunto de todos los proyectos a los que hace referencia)

Si tiene la opción, recomendaría ir a un proyecto compartido, generalmente es más flexible y más poderoso. Si conoce sus requisitos por adelantado y una PCL puede cumplirlos, también puede ir por esa ruta. PCL también impone una separación más clara al no permitirle escribir código específico de la plataforma (lo que podría no ser una buena opción para ser puesto en un ensamble compartido en primer lugar).

El enfoque principal de ambos es cuando se dirigen a múltiples plataformas, de lo contrario, normalmente usaría solo un proyecto ordinario de biblioteca / dll.


12
2017-10-27 09:01



Del libro VS 2015 succintly

Los proyectos compartidos permiten compartir código, recursos y recursos en múltiples tipos de proyectos. Más específicamente, los siguientes tipos de proyectos pueden hacer referencia y consumir proyectos compartidos:

  • Consola, Windows Forms y Windows Presentation Foundation.
  • Aplicaciones de Windows Store 8.1 y aplicaciones de Windows Phone 8.1.
  • Windows Phone 8.0 / 8.1 aplicaciones de Silverlight.
  • Bibliotecas portátiles de clase.

Nota: - Tanto los proyectos compartidos como las bibliotecas de clases portátiles (PCL) permiten compartir código, recursos XAML y activos, pero, por supuesto, existen algunas diferencias que se pueden resumir de la siguiente manera.

  • Un proyecto compartido no produce un ensamblaje reutilizable, por lo que solo se puede consumir desde dentro de la solución.
  • Un proyecto compartido admite el código específico de la plataforma, ya que admite variables de entorno como WINDOWS_PHONE_APP y WINDOWS_APP que puede usar para detectar en qué plataforma se está ejecutando su código.
  • Finalmente, los proyectos compartidos no pueden tener dependencias en bibliotecas de terceros.
  • En comparación, una PCL produce una biblioteca .dll reutilizable y puede tener dependencias en bibliotecas de terceros, pero no admite variables de entorno de plataforma

7
2017-10-06 09:15