Roll-forward do tempo de execução de implantação independente
As implantações de aplicativos autônomos do .NET Core incluem as bibliotecas do .NET Core e o tempo de execução do .NET Core. A partir do SDK do .NET Core 2.1 (versão 2.1.300), uma implantação de aplicativo independente publica o tempo de execução de patch mais alto em sua máquina. Por padrão, para uma implantação independente, dotnet publish
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 . O aplicativo deve ser republicado para obter um novo patch. Aplicativos autônomos são criados especificando -r <RID>
no dotnet publish
comando ou especificando o identificador de tempo de execução (RID) no arquivo de projeto (csproj / vbproj) ou na linha de comando.
Visão geral do roll forward da versão do patch
restore
publish
e build
são dotnet
comandos que podem ser executados separadamente. A escolha de tempo de execução é parte da restore
operação, não publish
ou build
. Se você ligar publish
para , a versão mais recente do patch será escolhida. Se você ligar publish
com o --no-restore
argumento, talvez não obtenha a versão de patch desejada porque uma anterior restore
pode não ter sido executada com a nova política de publicação de aplicativo independente. Nesse caso, um erro de compilação é 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 em vez disso. Para resolver esse problema, certifique-se de que 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."
Nota
restore
e build
pode ser executado implicitamente como parte de outro comando, como publish
. Quando executados implicitamente como parte de outro comando, eles recebem contexto adicional para que os artefatos certos sejam produzidos. Quando você publish
com um tempo de execução (por exemplo, dotnet publish -r linux-x64
), o implícito restore
restaura pacotes para o tempo de execução do linux-x64. Se você chamar restore
explicitamente, ele não restaurará pacotes de tempo de execução por padrão, porque não tem esse contexto.
Como evitar a restauração durante a publicação
A execução restore
como parte da operação pode ser indesejável para o publish
seu cenário. Para evitar restore
durante publish
a criação de aplicativos autônomos, 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
comotrue
.
Argumento sem restauração com opções de publicação dotnet
Se você deseja criar aplicativos autônomos e aplicativos dependentes de estrutura com o mesmo arquivo de projeto e deseja usar o --no-restore
argumento com dotnet publish
, escolha uma das seguintes opções:
Prefira o comportamento dependente da estrutura. Se o aplicativo for dependente da estrutura, esse é o comportamento padrão. Se o aplicativo for autônomo e puder usar um tempo de execução local 2.1.0 sem patch, defina o
TargetLatestRuntimePatch
comofalse
no arquivo de projeto.Prefira o comportamento independente. Se o aplicativo for independente, esse é o comportamento padrão. Se o aplicativo depender da estrutura e exigir o patch mais recente instalado, defina
TargetLatestRuntimePatch
comotrue
no arquivo de projeto.Assuma o controle explícito da versão da estrutura de tempo de execução definindo
RuntimeFrameworkVersion
para a versão de patch específica no arquivo de projeto.