Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao criar um projeto pela primeira vez, recomendamos que você crie uma biblioteca de classes do .NET Standard, pois ela fornece compatibilidade com a maior variedade de projetos de consumo. Usando o .NET Standard, você adiciona suporte multiplataforma a uma biblioteca .NET por padrão. No entanto, em alguns cenários, talvez você também precise incluir um código direcionado a uma estrutura específica. Este artigo mostra como fazer isso para projetos no estilo SDK .
Para projetos no estilo SDK, você pode configurar o suporte para várias estruturas de destino (TFM) no arquivo de projeto e, em seguida, usar dotnet pack ou msbuild /t:pack criar o pacote.
Observação
nuget.exe CLI não dá suporte ao empacotamento de projetos no estilo SDK, portanto, você só deve usar dotnet pack ou msbuild /t:pack. Recomendamos que você inclua todas as propriedades que normalmente estão no arquivo .nuspec, no arquivo de projeto. Para direcionar várias versões do .NET Framework em um projeto não estilo SDK, consulte Suporte a várias versões do .NET Framework.
Criar um projeto que dê suporte a várias versões do .NET Framework
Crie uma nova biblioteca de classes do .NET Standard no Visual Studio ou use
dotnet new classlib.Recomendamos que você crie uma biblioteca de classes do .NET Standard para melhor compatibilidade.
Edite o arquivo .csproj para dar suporte às estruturas de destino. Por exemplo, alteração
<TargetFramework>netstandard2.0</TargetFramework>to:
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>Verifique se você alterou o elemento XML alterado de singular para plural (adicione os "s" às marcas abertas e fechadas).
Se você tiver qualquer código que funcione apenas em um TFM, poderá usar
#if NET45ou#if NETSTANDARD2_0separar o código dependente de TFM. (Para obter mais informações, consulte Como realizar multitarget.) Por exemplo, você pode usar o seguinte código: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 } }Adicione os metadados do NuGet que você deseja para as propriedades .csproj as MSBuild.
Para obter a lista de metadados de pacote disponíveis e os nomes de propriedades do MSBuild, consulte o destino do pacote. Veja também o controle de ativos de dependência.
Se você quiser separar as propriedades relacionadas ao build dos metadados do NuGet, poderá usar outro
PropertyGroup, ou colocar as propriedades do NuGet em outro arquivo e usar a diretivaImportdo MSBuild para incluí-lo.Directory.Build.PropseDirectory.Build.Targetstambém têm suporte a partir do MSBuild 15.0.Agora, use
dotnet packe o .nupkg resultante é compatível com o .NET Standard 2.0 e o .NET Framework 4.5.
Aqui está o arquivo .csproj que é gerado usando as etapas anteriores e o SDK do .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>