Multi-Targeting en Net Standard / Crear librerías para Net Framework 4.5.x y Net Core 2

Israel A. Cortes Flores
3 min readFeb 27, 2019

Microsoft ha creado un ROADMAP muy eficaz para la migración de .net framework legacy code a net core, net standard es la puerta pero técnicas como el Multi-Targeting lo complementan y nos abren un abanico de posibilidades.

Hay entornos en los que no podemos usar una versión concreta de net framework como por ejemplo si usas Biztalk Server 2.013 estarás obligado a usar versiones 4.5.x, pero esto no significa que no podamos empezar a hacer código compatible con .net core y tener una base común con los nuevos desarrollos.

Biztalk Server 2013 Net Standard

Net framework →.NET es un estándar de ECMA que tiene distintas implementaciones: .NET Framework es la implementación para windows original. Lo componen biblioteca de clases, compilador y el tiempo de ejecución.

Net Core → Nueva implementación de .NET, que permite escribir código multiplataforma, es fundamentalmente modular en su diseño y arquitectura. Los componentes del compilador, el tiempo de ejecución y la biblioteca son entidades independientes que se comunican a través de interfaces adecuadamente diseñadas.

Net Standard → Es una especificación formal de las API de .NET que se prevé que estén disponibles en todas las implementaciones de .NET. La finalidad de .NET Standard es establecer una mayor uniformidad en el ecosistema de .NET. Para crear proyectos Net Estándar es necesario como mínimo Visual Studio 2017.

Pero .NET Standard 2.0 inicialmente no soporta .NET Framework 4.5.1, está diseñado para

· .NET Framework 4.6.1

· >=.NET Core 2.0

La solución:

Multi-Targeting →Permite definir varios frameworks (versiones) de destino, tanto .net framework como .net core. Solo se puede hacer editando el fichero .csproj

<TargetFrameworks>netstandard2.0;net451</TargetFrameworks>

Aquí podemos ver una aplicación de ejemplo

1º Crear un proyecto net standard

2º Creamos una clase por ejemplo para validar un xml

3º Editamos el fichero .csproj

<TargetFrameworks>netstandard2.0;net451</TargetFrameworks>

4º Creamos 2 proyectos de tipo consola un net core 2.2 y otro net framework 4.5.1

5º Agregamos las referencias al proyecto .net estándar

6º Usamos la clase de validación y compilamos

Código

https://github.com/ICortesF/netStandardTest1

--

--