Compartir a través de


Puesta al día del runtime de implementación autocontenida

Las implementaciones de aplicaciones autocontenidas de .NET Core incluyen las bibliotecas de .NET Core y el entorno de ejecución de .NET Core. A partir del SDK de .NET Core 2.1 (versión 2.1.300), una implementación de aplicación autocontenida publica el runtime con la revisión superior en el equipo. De forma predeterminada, dotnet publish para una implementación independiente, selecciona la versión más reciente instalada como parte del SDK en la máquina de publicación. Esto permite que la aplicación implementada se ejecute con correcciones de seguridad (y otras correcciones) disponibles durante publish. La aplicación debe volver a publicarse para obtener un nuevo parche. Las aplicaciones independientes se crean especificando -r <RID> en el dotnet publish comando o especificando el identificador en tiempo de ejecución (RID) en el archivo de proyecto (csproj / vbproj) o en la línea de comandos.

Información general sobre la puesta al día de una versión de revisión

restorey buildpublish son dotnet comandos que se pueden ejecutar por separado. La opción en tiempo de ejecución forma parte de la restore operación, no publish o build. Si se llama a publish, se elegirá la versión de revisión más reciente. Si se llama a publish con el argumento --no-restore, podría no obtenerse la versión de revisión deseada porque es posible que un restore anterior no se haya ejecutado con la directiva de publicación de la nueva aplicación autocontenida. En este caso, se genera un error de compilación con texto similar al siguiente:

"El proyecto se restauró con Microsoft.NETCore.App versión 2.0.0, pero con la configuración actual, se usaría la versión 2.0.6 en su lugar. Para resolver este problema, asegúrese de que se usan las mismas opciones de configuración para la restauración y para las operaciones posteriores, como compilación o publicación. Normalmente, este problema puede producirse si la propiedad RuntimeIdentifier se establece durante la compilación o publicación, pero no durante la restauración".

Nota:

restore y build se pueden ejecutar implícitamente como parte de otro comando, como publish. Cuando se ejecutan implícitamente como parte de otro comando, se les proporciona un contexto adicional para que se produzcan los artefactos correctos. Cuando usas publish con un runtime (por ejemplo, dotnet publish -r linux-x64), el elemento implícito restore restaura los paquetes para el runtime linux-x64. Si llama restore explícitamente, no restaura paquetes en tiempo de ejecución de forma predeterminada, ya que no tiene ese contexto.

Cómo evitar la restauración durante la publicación

La ejecución restore como parte de la publish operación puede no ser deseable para su escenario. Para evitar restore durante publish al crear aplicaciones autocontenidas, haga lo siguiente:

  • Establezca la RuntimeIdentifiers propiedad en una lista separada por punto y coma de todos los RIDs que se van a publicar.
  • Establezca la propiedad TargetLatestRuntimePatch en true.

Argumento no-restore con opciones de dotnet publish

Si desea crear aplicaciones independientes y aplicaciones dependientes del marco con el mismo archivo de proyecto y desea usar el --no-restore argumento con dotnet publish, elija una de las siguientes opciones:

  1. Prefiere el comportamiento dependiente del marco. Si la aplicación depende del marco de trabajo, este es el comportamiento predeterminado. Si la aplicación es independiente y puede usar un entorno de ejecución local 2.1.0 sin parches, establezca TargetLatestRuntimePatch en false en el archivo del proyecto.

  2. Preferir el comportamiento autocontenido. Si la aplicación es independiente, este es el comportamiento predeterminado. Si la aplicación es dependiente del marco y requiere tener la revisión más reciente instalada, establezca TargetLatestRuntimePatch a true en el archivo del proyecto.

  3. Tome el control explícito de la versión del entorno de ejecución especificando RuntimeFrameworkVersion en la versión de parche específica en el archivo del proyecto.