Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Al crear un proyecto por primera vez, se recomienda crear una biblioteca de clases de .NET Standard, ya que proporciona compatibilidad con la gama más amplia de proyectos de consumo. Mediante .NET Standard, se agrega compatibilidad multiplataforma a una biblioteca de .NET de forma predeterminada. Sin embargo, en algunos escenarios, es posible que también tenga que incluir código destinado a un marco determinado. En este artículo se muestra cómo hacerlo para proyectos de estilo SDK .
En el caso de los proyectos de estilo SDK, puede configurar la compatibilidad con varios marcos de destino (TFM) en el archivo del proyecto y, a continuación, usar dotnet pack o msbuild /t:pack crear el paquete.
Nota:
nuget.exe CLI no admite el empaquetado de proyectos de estilo SDK, por lo que solo debe usar dotnet pack o msbuild /t:pack. Se recomienda que incluya todas las propiedades que normalmente se encuentran en el archivo del proyecto .nuspec en su lugar. Para tener como destino varias versiones de .NET Framework en un proyecto que no sea de estilo SDK, consulte Compatibilidad con varias versiones de .NET Framework.
Creación de un proyecto que admita varias versiones de .NET Framework
Cree una biblioteca de clases de .NET Standard en Visual Studio o use
dotnet new classlib.Se recomienda crear una biblioteca de clases de .NET Standard para obtener la mejor compatibilidad.
Edite el archivo .csproj para admitir las plataformas de destino. Por ejemplo, cambiar
<TargetFramework>netstandard2.0</TargetFramework>to:
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>Asegúrese de cambiar el elemento XML cambiado de singular a plural (agregue los "s" a las etiquetas abiertas y cerradas).
Si tiene algún código que solo funcione en un TFM, puede usar
#if NET45o#if NETSTANDARD2_0para separar el código dependiente del TFM. (Para obtener más información, vea How to multitarget).) Por ejemplo, puede usar el código siguiente:public string Platform { get { #if NET45 return ".NET Framework" #elif NETSTANDARD2_0 return ".NET Standard" #else #error This code block does not match csproj TargetFrameworks list #endif } }Agregue los metadatos de NuGet que desee a .csproj como propiedades de MSBuild.
Para obtener la lista de metadatos de paquete disponibles y los nombres de propiedad de MSBuild, consulte destino de paquete. Consulte también Control de los recursos de dependencia.
Si desea separar las propiedades relacionadas con la compilación de los metadatos de NuGet, puede usar otra
PropertyGroupo colocar las propiedades de NuGet en otro archivo y usar la directiva deImportMSBuild para incluirla.Directory.Build.PropsyDirectory.Build.Targetstambién se admiten a partir de MSBuild 15.0.Ahora, use
dotnet packy el .nupkg resultante tenga como destino .NET Standard 2.0 y .NET Framework 4.5.
Este es el archivo .csproj que se genera mediante los pasos anteriores y el SDK de .NET Core 2.2.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
<Description>Sample project that targets multiple TFMs</Description>
</PropertyGroup>
</Project>