Estaba mirando las nuevas características para Visual Studio 2015 y Shared Project surgió mucho, pero no entiendo cómo es diferente usar una Biblioteca de clases o una Biblioteca de clases portátil. ¿Alguien puede explicar?
Editar: Proyecto compartido 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 estoy tratando de entender es cómo un proyecto compartido difiere de una biblioteca de clases. Ver enlace a continuación.
c#
.net
visual-studio-2015
Indy411
fuente
fuente
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 ensamblaje.
Mientras que con el primero, la unidad de reutilización es el código fuente, y el código compartido se incorpora en cada ensamblaje que hace referencia al proyecto compartido.
Esto puede ser útil cuando desea crear ensamblajes separados que se dirigen a plataformas específicas pero que aún tienen código que se debe compartir.
Ver también aquí :
En versiones anteriores de Visual Studio 1 , podría compartir el código fuente entre proyectos agregando -> Elemento existente y luego eligiendo Vincular. Pero esto era un poco torpe y cada archivo fuente separado tenía que seleccionarse individualmente. Con el movimiento 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 era una nueva característica en Visual Studio 2015. De hecho, hicieron su debut en Visual Studio 2013 Update 2
fuente
Encontré más información de este blog .
fuente
Las diferencias cortas son
1) PCL no tendrá acceso completo a .NET Framework, como lo ha hecho SharedProject.
2) #ifdef para el código específico de la plataforma: no puede escribir en PCL (la opción #ifdef no está disponible en una PCL porque está compilada por separado, como su propia DLL, por lo que en el momento de la compilación (cuando se evalúa el #ifdef) no sabe de qué plataforma formará parte ), donde puede hacerlo como proyecto compartido.
3) El código específico de la plataforma se logra usando Inversion Of Control en PCL, donde al usar las declaraciones #ifdef se puede lograr lo mismo en Shared Project.
Puede encontrar un excelente artículo que ilustra las diferencias entre PCL y proyecto compartido en el siguiente enlace
http://hotkrossbits.com/2015/05/03/xamarin-forms-pcl-vs-shared-project/
fuente
Como otros ya escribieron, en resumen:
reutilización compartida del proyecto en el nivel de código (archivo), lo que permite la estructura de carpetas y los recursos también
reutilización de pcl en el nivel de ensamblaje
Lo que más me faltaba 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).
En 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 de destino (aunque debe compilarse condicionalmente)
o Se integra en el momento de la compilación
- Tamaño ligeramente mayor de ensamblajes resultantes
: necesita Visual Studio 2013 Update 2 o superior
pcl :
+ genera un ensamblado compartido
+ utilizable con versiones anteriores de Visual Studio (anterior a la actualización 2 de 2013)
o vinculado dinámicamente
- funcionalidad limitada (subconjunto de todos los proyectos a los que se hace referencia)
Si tiene la opción, recomendaría ir a un proyecto compartido, generalmente es más flexible y más potente. Si conoce sus requisitos de antemano y un PCL puede cumplirlos, también podría tomar 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 colocarlo en un ensamblado compartido en primer lugar).
El enfoque principal de ambos es cuando apunta a múltiples plataformas, de lo contrario, normalmente usaría solo un proyecto de biblioteca / dll ordinario.
fuente
Del libro VS 2015 sucintamente
Proyectos compartidos permite compartir código, activos y recursos en múltiples tipos de proyectos. Más específicamente, los siguientes tipos de proyectos pueden hacer referencia y consumir proyectos compartidos:
Nota: - Tanto los proyectos compartidos como las bibliotecas de clases portátiles (PCL) permiten compartir código, recursos XAML y activos, pero, por supuesto, hay algunas diferencias que pueden resumirse de la siguiente manera.
fuente
La biblioteca de clases es un código compilado compartido.
El proyecto compartido es el código fuente compartido.
fuente