He leído sobre la diferencia entre .NET Standard y .NET Core, pero realmente no sé cuál es la diferencia, o cuándo elegir un proyecto de biblioteca .NET Standard y cuándo elegir un proyecto de biblioteca .NET Core.
He leído que .NET Standard es para asegurar que un conjunto de API siempre esté disponible, sin importar la plataforma utilizada (siempre que esa plataforma sea compatible con la versión .NET Standard que he elegido). Si no me equivoco, esto significa que puedo crear una biblioteca de clases de .NET Standard y luego usarla en cualquier plataforma que sea compatible con la versión .NET Standard que he elegido.
Con .NET Core, he leído que también está diseñado para uso multiplataforma, por lo que si elijo una biblioteca .NET Core, parece que también puedo usarla en muchas plataformas, como .NET Standard.
Entonces, al final, no veo la diferencia. ¿Cuándo debo usar cuál? ¿Cuál es la diferencia entre ellos?
Intentaré aclarar aún más sus dudas y extender la respuesta de Jon Skeet.
.NET Standard es una especificación , por lo que una biblioteca compilada para una versión específica de .NET Standard se puede utilizar en diferentes implementaciones de .NET Standard.
Como dije en mi otro comentario, una buena analogía para la relación entre .NET Standard y otras implementaciones de .NET Standard (.NET Core, .NET Framework, etc.) es esta esencia de David Fowler : las versiones de .NET Standard son Interfaces
, mientras que los frameworks son implementaciones de esas interfaces.
Este diagrama simplificado puede ayudar a comprender esta relación:
Cualquier objetivo NetCore10
tiene acceso a INetStandard15
API y API NetCore10
específicas (como DotNetHostPolicy
).
Por supuesto, esta biblioteca no se puede utilizar en diferentes INetStandard15
implementaciones ( NetCore10
no se puede convertir en NetFramework462
ni Mono46
).
Si, en cambio, necesidad de acceso sólo a INetStandard15
las API (y especificación de destino que en lugar de un marco concreto) su biblioteca podrá ser utilizado por cualquier marco que prevé su aplicación ( NetCore10
, NetFramework462
, etc.)
Nota: en la analogía original, David Fowler usó interfaces tanto para las versiones .NET Standard como para las implementaciones de frameworks. Creo que usar interfaces y clases es, en cambio, más intuitivo y representa mejor la relación entre especificaciones e implementaciones concretas.
.NET Core es una implementación de .NET Standard. Está disponible en varios sistemas operativos, pero eso no es lo mismo: también hay otras implementaciones de .NET Standard.
Entonces, si crea una biblioteca .NET Core, tendrá acceso a cosas que están implementadas en .NET Core, pero que no son parte de .NET Standard, y su biblioteca no será compatible con otras implementaciones de .NET Standard, como Xamarin, Tizen, marco de escritorio completo .NET, etc.
En resumen: para lograr la máxima portabilidad, haga que su biblioteca apunte a .NET Standard.
.NET Standard es una especificación de las API de .NET destinada a estar disponible en implementaciones de .NET. Esto permite definir un conjunto uniforme de API BCL para todas las implementaciones de .NET.
.NET Core es una de esas implementaciones de .NET Standard. .NET Framework es otra implementación de .NET Standard.
Imagen del blog de .NET
Dirigirse a .NET Standard aumenta el soporte de su plataforma, mientras que dirigirse a una plataforma .NET particular como .NET Core (o .NET Framework) le permitirá utilizar todas las características de la plataforma para esa plataforma.
La biblioteca .NET Core Class es básicamente un subconjunto de la biblioteca .NET Framework, que solo contiene menos API. Ceñirse a la biblioteca de clases de .NET Core dificulta compartir código entre tiempos de ejecución. Es posible que este código no funcione para un tiempo de ejecución diferente (Mono para Xamarin), porque no tiene la API que necesita. Para resolver esto, existe .NET Standard, que es solo un conjunto de especificaciones que le indica qué API puede usar . El objetivo principal de .NET Standard es compartir código entre tiempos de ejecución. Y es importante que esta especificación se implemente en todos los tiempos de ejecución. (.NET Framework, .NET Core y Mono para Xamarin).
Entonces, si está seguro de que usará su biblioteca solo para proyectos .NET Core, puede ignorar .NET Standard, pero si existe una pequeña posibilidad de que su código sea utilizado por .NET Framework o Mono para Xamarin, entonces es mejor para adherirse a .NET Standard
También tenga en cuenta que las versiones superiores de .NET Standard contienen más API, pero las versiones inferiores son compatibles con más plataformas. Por lo tanto, si crea una biblioteca .NET Standard que desea compartir entre tiempos de ejecución, elija la versión más baja que pueda , lo que le ayudará a llegar a la mayoría de las plataformas. Por ejemplo, si desea ejecutar .NET Framework 4.5 y .NET Core 1.0, la versión más alta de .NET Standard que puede usar es .NET Standard 1.1. Consulte esta excelente tabla de la documentación para obtener más información al respecto.
PD: Además, si desea convertir su biblioteca a .NET Standard, .NET Portability Analyzer podría ayudarlo con eso.
.NET Standard es una especificación de API que deben proporcionar todas las implementaciones de .NET. Aporta coherencia a la familia .NET y le permite crear bibliotecas que puede utilizar desde cualquier implementación .NET. Reemplaza las PCL para crear componentes compartidos.
.NET Core es una implementación de .NET Standard que está optimizada para crear aplicaciones de consola, aplicaciones web y servicios en la nube con ASP.NET Core. Su SDK viene con una potente herramienta que, además del desarrollo de Visual Studio, admite un flujo de trabajo de desarrollo completo basado en la línea de comandos. Puede obtener más información sobre ellos en aka.ms/netstandardfaq y aka.ms/netcore .
Lo anterior, junto con una explicación muy clara de la mayoría de las cosas discutidas en esta pregunta, se puede encontrar en el siguiente artículo extremadamente útil de Microsoft (MSDN, septiembre de 2017): .NET Standard - Desmitificando .NET Core y .NET Standard
En términos simples, el estándar .NET se utiliza para escribir proyectos de biblioteca de clases que se compilan en dll. .NET Core se puede utilizar para desarrollar aplicaciones web reales que pueden ejecutarse en todos los sistemas operativos (Windows, Linux, MacOS). (En .NET Core 3, Microsoft ha proporcionado la funcionalidad para desarrollar aplicaciones de escritorio usando WPF, pero hasta ahora estas aplicaciones no serán multiplataforma y solo se ejecutarán en el sistema Windows. En el futuro, Microsoft podría hacerlas multiplataforma también) .NET estándar Las bibliotecas / dlls se pueden usar en cualquier aplicación que use .NET (.NET framework, .NET Core), lo que significa que puede usar .NET estándar con .NET framework y .NET core.
¿Quiso decir .NET Framework? Porque .NET estándar es una implementación, como .NET Framework, .NET Core y Xamarin.
Me encanta .NET Core porque podemos alojarlo en Linux (use nginx en mi experiencia). Es diferente al marco .NET, que solo puede alojar en IIS. En este caso, puede considerar el presupuesto de alojamiento (porque el servidor de Windows es caro para mí).
En la perspectiva del entorno de desarrollo , .Net core es ligero. Entonces, puede usar VSCode, Sublime, para IDE (no solo Visual Studio).
La estrella de 'Gran Hermano', Claire Rehfuss, advierte a los fanáticos que no confíen en las cuentas de los spoilers.
Kristen Stewart una vez le dio un fuerte puñetazo a su coprotagonista de 'Blancanieves', Chris Hemsworth, que fue un ataque que el actor no vio venir.
En una entrevista con la revista GQ, Jin de BTS reveló que una parte de la canción de BTS y Coldplay 'My Universe' no 'llegó al corte final'.
'Scream' establece un regreso sangriento que provoca algunas nuevas direcciones, pero la nueva ola de asesinatos de Ghostface no es tan profunda como debería.
¡Nuestro mini crucigrama actualizado semanalmente combina nuestras lecturas favoritas de HowStuffWorks con pistas inteligentes!
Lavar la ropa ya es bastante malo sin tener que preocuparse por elegir el detergente adecuado. Entonces, ¿cuál es mejor? ó acaso importa?
Las familias Fugate y Combs en la zona rural de Kentucky perdieron la lotería genética, y ambos compartían un rasgo recesivo raro que hacía que su piel se viera azul cuando se casaron. ¿Cuál fue la causa de esto? ¿Y qué pasó con las familias?
Se están criando dos polluelos sin padre en un programa para salvar al cóndor de California de la extinción. ¿Cómo son posibles estos nacimientos 'vírgenes'?
La estrella de Vanderpump Rules, Katie Maloney-Schwartz, habló sobre el progreso que ha logrado en su viaje de amor propio en una publicación honesta y sincera en Instagram el jueves.
Jessica Alba compartió un encantador video en su Instagram que la muestra a ella y a sus hijos acurrucándose y jugando con los dos perros llamados Dolly y Lucy.
"Fue una situación de amor a primera vista", le dice una fuente a PEOPLE sobre Megan Fox y Machine Gun Kelly, quienes se comprometieron el fin de semana pasado durante unas vacaciones en Puerto Rico.
Según la policía, Devonne Marsh supuestamente cubrió a su novia, que no ha sido identificada, con líquido para encendedores y encendió las llamas.
Es posible que hayas visto la publicación reciente de Greta Christina sobre la puntuación. Cuando no estoy trabajando en mi propia redacción, uno de mis trabajos es ofrecer a la gente comentarios sobre los suyos (por lo que se dice, valgo mi tarifa) y, en la actualidad, ella y yo estamos editando su nuevo libro.
Una propuesta para arreglar la gobernanza de San Francisco Esta es mi propuesta para mejorar la gobernanza de la ciudad de San Francisco, a la que simplemente me referiré como RestoreSF para abreviar. Tiene solo dos partes.
Los empresarios no son personas promedio, son una raza especial. Sus ciertos rasgos de personalidad los ayudan a liderar equipos, administrar negocios y construir imperios.
La naturaleza pública e inmutable de Bitcoin requiere el regreso de los nodos mixtos para lograr una verdadera privacidad a nivel de red. Harry Halpin y Ania Piotrowska 20 de enero de 2022 Muchos concibieron originalmente Bitcoin como un dinero digital anónimo, ya que todas las transacciones se realizan como transferencias entre pares entre direcciones de billetera que actúan como seudónimos.