Validación de paquetes en distintos entornos de ejecución
Artículo
Puede optar por tener ensamblados de implementación diferentes para distintos entornos de ejecución en el paquete NuGet. En ese caso, debe asegurarse de que estos ensamblados son compatibles entre sí y con los ensamblados en tiempo de compilación.
Por ejemplo, tenga en cuenta el siguiente caso. Está trabajando en una biblioteca que implica algunas llamadas de interoperabilidad a Unix y a las API de Windows, respectivamente. Ha escrito el código siguiente:
C#
#if UnixpublicstaticvoidOpen(string path, bool securityDescriptor)
{
// Call Unix specific stuff.
}
#elsepublicstaticvoidOpen(string path)
{
// Call Windows specific stuff.
}
#endif
La estructura del paquete resultante tiene el aspecto siguiente.
XML
lib/net6.0/A.dll
runtimes/unix/lib/net6.0/A.dll
lib\net6.0\A.dll siempre se usa en tiempo de compilación, independientemente del sistema operativo subyacente. lib\net6.0\A.dll también se usa en tiempo de ejecución para sistemas que no sean Unix. Aun así, runtimes\unix\lib\net6.0\A.dll se usa en tiempo de ejecución para sistemas Unix.
Al intentar empaquetar este proyecto, se producirá el error siguiente:
Intenta empaquetar el proyecto de nuevo y se realiza correctamente.
Modo strict
Puede habilitar el modo strict para este validador al configurar laEnableStrictModeForCompatibleTfms propiedad en el archivo del proyecto. La habilitación del modo strict cambia algunas reglas y otras se ejecutarán al obtener las diferencias. Esto resulta útil cuando se quiere que los lados que se comparan tengan un área de superficie e identidad estrictamente iguales. Para obtener más información, consulte Modo strict.
Colaborar con nosotros en GitHub
El origen de este contenido se puede encontrar en GitHub, donde también puede crear y revisar problemas y solicitudes de incorporación de cambios. Para más información, consulte nuestra guía para colaboradores.
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Obtenga información acerca de cómo las características de compatibilidad de .NET, incluidas las tareas de MSBuild y una herramienta de línea de comandos, se pueden usar para desarrollar bibliotecas coherentes y bien formadas con múltiples versiones.
Obtenga información acerca de la herramienta global Microsoft.DotNet.ApiCompat.Tool, que realiza comprobaciones de compatibilidad de API en ensamblados y paquetes.
Obtenga información sobre cómo se pueden usar las características de compatibilidad de .NET para desarrollar paquetes de varios destinos coherentes y bien formados.