Compartilhar via


Roll forward de runtime de implantação autossuficiente

As implantações de aplicativos independentes do .NET Core incluem as bibliotecas do .NET Core e o runtime do .NET Core. A partir do SDK do .NET Core 2.1 (.NET Core 2.1.300), uma implantação de aplicativo autocontida publica o runtime de patch mais recente no computador. Por padrão, dotnet publish para uma implantação independente, seleciona a versão mais recente instalada como parte do SDK na máquina de publicação. Isso permite que seu aplicativo implantado seja executado com correções de segurança (e outras correções) disponíveis durante publish. O aplicativo deve ser republicado para obter um novo patch. Aplicativos autocontidos são criados especificando -r <RID> no dotnet publish comando ou especificando o RID (identificador de runtime) no arquivo de projeto (csproj/vbproj) ou na linha de comando.

Visão geral do roll forward da versão de patch

restore build e publish são dotnet comandos que podem ser executados separadamente. A opção de runtime faz parte da restore operação, não publish ou build. Se você chamar publish, a versão mais recente do patch será escolhida. Se você chamar publish com o argumento --no-restore, poderá não obter a versão de patch desejada, porque um restore anterior pode não ter sido executado com a nova política de publicação do aplicativo autossuficiente. Nesse caso, um erro de build é gerado com texto semelhante ao seguinte:

"O projeto foi restaurado usando Microsoft.NETCore.App versão 2.0.0, mas com as configurações atuais, a versão 2.0.6 seria usada. Para resolver esse problema, verifique se as mesmas configurações são usadas para restauração e para operações subsequentes, como compilar ou publicar. Normalmente, esse problema pode ocorrer se a propriedade RuntimeIdentifier for definida durante a compilação ou publicação, mas não durante a restauração."

Observação

restore e build pode ser executado implicitamente como parte de outro comando, como publish. Quando executados implicitamente como parte de outro comando, eles são fornecidos com contexto adicional para que os artefatos certos sejam produzidos. Quando você executa publish com um runtime (por exemplo, dotnet publish -r linux-x64), o restore implícito restaura os pacotes para o runtime linux-x64. Se você chamar restore explicitamente, ele não restaurará pacotes de runtime por padrão, pois ele não tem esse contexto.

Como evitar a restauração durante o processo de publicação

A execução restore como parte da publish operação pode ser indesejável para seu cenário. Para evitar restore durante publish ao criar aplicativos autossuficientes, faça o seguinte:

  • Defina a RuntimeIdentifiers propriedade como uma lista separada por ponto-e-vírgula de todos os RIDs a serem publicados .
  • Defina a propriedade TargetLatestRuntimePatch como true.

Argumento no-restore com opções dotnet publish

Se você quiser criar aplicativos autocontidos e aplicativos dependentes do framework com o mesmo arquivo de projeto, e quiser usar o argumento --no-restore com dotnet publish, então escolha uma das seguintes opções:

  1. Prefira o comportamento dependente de estrutura. Se o aplicativo depender da estrutura, esse será o comportamento padrão. Se o aplicativo for autossuficiente e puder usar um runtime local 2.1.0 sem patch, defina o TargetLatestRuntimePatch como false no arquivo de projeto.

  2. Prefira o comportamento autossuficiente. Se o aplicativo for autônomo, esse será o comportamento padrão. Se o aplicativo depender do framework e exigir a instalação do patch mais recente, defina TargetLatestRuntimePatch para true no arquivo de projeto.

  3. Assuma o controle explícito da versão da estrutura de runtime definindo RuntimeFrameworkVersion a versão do patch específica no arquivo de projeto.