Implementación de aplicaciones de .NET Core con Visual StudioDeploy .NET Core apps with Visual Studio

Puede implementar una aplicación de .NET Core como una implementación dependiente de la plataforma, que incluye los archivos binarios de la aplicación pero depende de la presencia de .NET Core en el sistema de destino, o como una implementación independiente, que incluye la aplicación y los archivos binarios de .NET Core.You can deploy a .NET Core application either as a framework-dependent deployment, which includes your application binaries but depends on the presence of .NET Core on the target system, or as a self-contained deployment, which includes both your application and .NET Core binaries. Para obtener información general sobre la implementación de aplicaciones de NET Core, vea Implementación de aplicaciones .NET Core.For an overview of .NET Core application deployment, see .NET Core Application Deployment.

En las secciones siguientes se muestra cómo usar Microsoft Visual Studio para crear los siguientes tipos de implementaciones:The following sections show how to use Microsoft Visual Studio to create the following kinds of deployments:

  • Implementación dependiente de marco de trabajoFramework-dependent deployment
  • Implementación dependiente de marco de trabajo con dependencias de tercerosFramework-dependent deployment with third-party dependencies
  • Implementación autocontenidaSelf-contained deployment
  • Implementación autocontenida con dependencias de tercerosSelf-contained deployment with third-party dependencies

Para obtener información sobre el uso de Visual Studio para desarrollar aplicaciones de .NET Core, vea Dependencias y requisitos de .NET Core .For information on using Visual Studio to develop .NET Core applications, see .NET Core dependencies and requirements.

Implementación dependiente de marco de trabajoFramework-dependent deployment

La implementación de una implementación dependiente del marco sin dependencias de terceros implica simplemente la compilación, la prueba y la publicación de la aplicación.Deploying a framework-dependent deployment with no third-party dependencies simply involves building, testing, and publishing the app. Un sencillo ejemplo escrito en C# ilustra el proceso.A simple example written in C# illustrates the process.

  1. Crear el proyecto.Create the project.

    Seleccione Archivo > Nuevo > Proyecto.Select File > New > Project. En el cuadro de diálogo Nuevo proyecto, expanda las categorías de proyecto del lenguaje (C# o Visual Basic) en el panel de tipos de proyecto instalados, elija .NET Core y luego seleccione la plantilla Aplicación de consola (.NET Core) en el panel central.In the New Project dialog, expand your language's (C# or Visual Basic) project categories in the Installed project types pane, choose .NET Core, and then select the Console App (.NET Core) template in the center pane. Escriba un nombre de proyecto, como "FDD", en el cuadro de texto Nombre.Enter a project name, such as "FDD", in the Name text box. Seleccione el botón Aceptar.Select the OK button.

  2. Agregar el código fuente de la aplicación.Add the application's source code.

    Abra el archivo Program.cs o Program.vb en el editor y reemplace el código generado automáticamente por el siguiente.Open the Program.cs or Program.vb file in the editor and replace the autogenerated code with the following code. Pide al usuario que escriba texto y muestra las palabras individuales escritas por el usuario.It prompts the user to enter text and displays the individual words entered by the user. Se usa la expresión regular \w+ para separar las palabras en el texto de entrada.It uses the regular expression \w+ to separate the words in the input text.

    using System;
    using System.Text.RegularExpressions;
    
    namespace Applications.ConsoleApps
    {
        public class ConsoleParser
        {
            public static void Main()
            {
                Console.WriteLine("Enter any text, followed by <Enter>:\n");
                String s = Console.ReadLine();
                ShowWords(s);
                Console.Write("\nPress any key to continue... ");
                Console.ReadKey();
            }
    
            private static void ShowWords(String s)
            {
                String pattern = @"\w+";
                var matches = Regex.Matches(s, pattern);
                if (matches.Count == 0)
                {
                    Console.WriteLine("\nNo words were identified in your input.");
                }
                else
                {
                    Console.WriteLine($"\nThere are {matches.Count} words in your string:");
                    for (int ctr = 0; ctr < matches.Count; ctr++)
                    {
                        Console.WriteLine($"   #{ctr,2}: '{matches[ctr].Value}' at position {matches[ctr].Index}");
                    }
                }
            }
        }
    }
    
    Imports System.Text.RegularExpressions
    
    Namespace Applications.ConsoleApps
        Public Module ConsoleParser
            Public Sub Main()
                Console.WriteLine("Enter any text, followed by <Enter>:")
                Console.WriteLine()
                Dim s = Console.ReadLine()
                ShowWords(s)
                Console.Write($"{vbCrLf}Press any key to continue... ")
                Console.ReadKey()
            End Sub
    
            Private Sub ShowWords(s As String)
                Dim pattern = "\w+"
                Dim matches = Regex.Matches(s, pattern)
                Console.WriteLine()   
                If matches.Count = 0 Then
                    Console.WriteLine("No words were identified in your input.")
                Else
                    Console.WriteLine($"There are {matches.Count} words in your string:")
                    For ctr = 0 To matches.Count - 1
                        Console.WriteLine($"   #{ctr,2}: '{matches(ctr).Value}' at position {matches(ctr).Index}")
                    Next
                End If
                Console.WriteLine()
            End Sub
        End Module
    End Namespace
    
    
  3. Crear una versión de depuración de la aplicación.Create a Debug build of your app.

    Seleccione Compilar > Compilar solución.Select Build > Build Solution. También puede compilar y ejecutar la versión de depuración de la aplicación seleccionando Depurar > Iniciar depuración.You can also compile and run the Debug build of your application by selecting Debug > Start Debugging.

  4. Implementar la aplicación.Deploy your app.

    Después de depurar y probar el programa, cree los archivos que se implementarán con la aplicación.After you've debugged and tested the program, create the files to be deployed with your app. Para publicar desde Visual Studio, siga estos pasos:To publish from Visual Studio, do the following:

    1. Cambie la configuración de la solución de Depurar a Versión en la barra de herramientas para compilar una compilación de versión (en lugar de depuración) de la aplicación.Change the solution configuration from Debug to Release on the toolbar to build a Release (rather than a Debug) version of your app.

    2. Haga clic con el botón derecho en el proyecto (no en la solución) en el Explorador de soluciones y seleccione Publicar.Right-click on the project (not the solution) in Solution Explorer and select Publish.

    3. En la pestaña Publicar, seleccione Publicar.In the Publish tab, select Publish. Visual Studio escribe los archivos que componen la aplicación en el sistema de archivos local.Visual Studio writes the files that comprise your application to the local file system.

    4. La pestaña Publicar muestra ahora un solo perfil, FolderProfile.The Publish tab now shows a single profile, FolderProfile. Los valores de configuración del perfil se muestran en la sección Resumen de la pestaña.The profile's configuration settings are shown in the Summary section of the tab.

    Los archivos resultantes se colocan en un directorio denominado Publish en Windows y publish en sistemas Unix que está en un subdirectorio del subdirectorio .\bin\release\netcoreapp2.1 del proyecto.The resulting files are placed in a directory named Publish on Windows and publish on Unix systems that is in a subdirectory of your project's .\bin\release\netcoreapp2.1 subdirectory.

Junto con los archivos de la aplicación, el proceso de publicación emite un archivo de base de datos de programa (.pdb) que contiene información de depuración sobre la aplicación.Along with your application's files, the publishing process emits a program database (.pdb) file that contains debugging information about your app. El archivo es útil principalmente para depurar excepciones.The file is useful primarily for debugging exceptions. Puede decidir no empaquetarlo con los archivos de la aplicación.You can choose not to package it with your application's files. Pero se debe guardar en caso de que se quiera depurar la compilación de versión de la aplicación.You should, however, save it in the event that you want to debug the Release build of your app.

Implemente el conjunto completo de archivos de la aplicación del modo que quiera.Deploy the complete set of application files in any way you like. Por ejemplo, puede empaquetarlos en un archivo ZIP, usar un simple comando copy o implementarlos con el paquete de instalación que prefiera.For example, you can package them in a Zip file, use a simple copy command, or deploy them with any installation package of your choice. Una vez instalados, los usuarios pueden ejecutar la aplicación mediante el comando dotnet y proporcionando el nombre de archivo, como dotnet fdd.dll.Once installed, users can then execute your application by using the dotnet command and providing the application filename, such as dotnet fdd.dll.

Además de los archivos binarios de la aplicación, el instalador también debe empaquetar el instalador de marco compartido o buscarlo como requisito previo como parte de la instalación de la aplicación.In addition to the application binaries, your installer should also either bundle the shared framework installer or check for it as a prerequisite as part of the application installation. La instalación del marco compartido requiere acceso raíz o de administrador dado que implica a toda la máquina.Installation of the shared framework requires Administrator/root access since it is machine-wide.

Implementación dependiente de marco de trabajo con dependencias de tercerosFramework-dependent deployment with third-party dependencies

La implementación de una implementación dependiente de la plataforma con una o más dependencias de terceros requiere que todas las dependencias estén disponibles para el proyecto.Deploying a framework-dependent deployment with one or more third-party dependencies requires that any dependencies be available to your project. Se requieren los pasos adicionales siguientes antes de poder compilar la aplicación:The following additional steps are required before you can build your app:

  1. Use el Administrador de paquetes NuGet para agregar una referencia a un paquete de NuGet para el proyecto y, si el paquete todavía no está disponible en el sistema, instálelo.Use the NuGet Package Manager to add a reference to a NuGet package to your project; and if the package is not already available on your system, install it. Para abrir el administrador de paquetes, seleccione Herramientas > Administrador de paquetes NuGet > Administrar paquetes NuGet para la solución.To open the package manager, select Tools > NuGet Package Manager > Manage NuGet Packages for Solution.

  2. Confirme que las dependencias de terceros (por ejemplo, Newtonsoft.Json) están instaladas en el sistema y, si no es así, instálelas.Confirm that your third-party dependencies (for example, Newtonsoft.Json) are installed on your system and, if they aren't, install them. La pestaña Instalado enumera los paquetes de NuGet instalados en el sistema.The Installed tab lists NuGet packages installed on your system. Si Newtonsoft.Json no aparece ahí, seleccione la pestaña Examinar y escriba "Newtonsoft.Json" en el cuadro de búsqueda.If Newtonsoft.Json is not listed there, select the Browse tab and enter "Newtonsoft.Json" in the search box. Seleccione Newtonsoft.Json y, en el panel derecho, seleccione el proyecto antes de hacer clic en Instalar.Select Newtonsoft.Json and, in the right pane, select your project before selecting Install.

  3. Si Newtonsoft.Json ya está instalado en el sistema, agréguelo al proyecto seleccionando el proyecto en el panel derecho de la pestaña Administrar paquetes para la solución.If Newtonsoft.Json is already installed on your system, add it to your project by selecting your project in the right pane of the Manage Packages for Solution tab.

Una implementación dependiente del marco con dependencias de terceros solo es tan portátil como sus dependencias de terceros.A framework-dependent deployment with third-party dependencies is only as portable as its third-party dependencies. Por ejemplo, si una biblioteca de terceros solo admite macOS, la aplicación no se puede portar a sistemas Windows.For example, if a third-party library only supports macOS, the app isn't portable to Windows systems. Esto ocurre si la dependencia de terceros propiamente dicha depende del código nativo.This happens if the third-party dependency itself depends on native code. Un buen ejemplo de esto es el servidor Kestrel, que requiere una dependencia nativa de libuv.A good example of this is Kestrel server, which requires a native dependency on libuv. Cuando se crea una FDD para una aplicación con esta clase de dependencia de terceros, el resultado publicado contiene una carpeta para cada identificador en tiempo de ejecución (RID) que admita la dependencia nativa (y que exista en su paquete de NuGet).When an FDD is created for an application with this kind of third-party dependency, the published output contains a folder for each Runtime Identifier (RID) that the native dependency supports (and that exists in its NuGet package).

Implementación independiente sin dependencias de tercerosSelf-contained deployment without third-party dependencies

La implementación de una implementación independiente sin dependencias de terceros implica crear el proyecto, modificar el archivo csproj y compilar, probar y publicar la aplicación.Deploying a self-contained deployment with no third-party dependencies involves creating the project, modifying the csproj file, building, testing, and publishing the app. Un sencillo ejemplo escrito en C# ilustra el proceso.A simple example written in C# illustrates the process. Empiece por crear, codificar y probar el proyecto, como haría en el caso de una implementación dependiente del marco de trabajo:You begin by creating, coding, and testing your project just as you would a framework-dependent deployment:

  1. Crear el proyecto.Create the project.

    Seleccione Archivo > Nuevo > Proyecto.Select File > New > Project. En el cuadro de diálogo Nuevo proyecto, expanda las categorías de proyecto del lenguaje (C# o Visual Basic) en el panel de tipos de proyecto instalados, elija .NET Core y luego seleccione la plantilla Aplicación de consola (.NET Core) en el panel central.In the New Project dialog, expand your language's (C# or Visual Basic) project categories in the Installed project types pane, choose .NET Core, and then select the Console App (.NET Core) template in the center pane. Escriba un nombre de proyecto, como "SCD", en el cuadro de texto Nombre y pulse el botón Aceptar.Enter a project name, such as "SCD", in the Name text box, and select the OK button.

  2. Agregar el código fuente de la aplicación.Add the application's source code.

    Abra el archivo Program.cs o Program.vb en el editor y reemplace el código generado automáticamente por el siguiente.Open the Program.cs or Program.vb file in your editor, and replace the autogenerated code with the following code. Pide al usuario que escriba texto y muestra las palabras individuales escritas por el usuario.It prompts the user to enter text and displays the individual words entered by the user. Se usa la expresión regular \w+ para separar las palabras en el texto de entrada.It uses the regular expression \w+ to separate the words in the input text.

    using System;
    using System.Text.RegularExpressions;
    
    namespace Applications.ConsoleApps
    {
        public class ConsoleParser
        {
            public static void Main()
            {
                Console.WriteLine("Enter any text, followed by <Enter>:\n");
                String s = Console.ReadLine();
                ShowWords(s);
                Console.Write("\nPress any key to continue... ");
                Console.ReadKey();
            }
    
            private static void ShowWords(String s)
            {
                String pattern = @"\w+";
                var matches = Regex.Matches(s, pattern);
                if (matches.Count == 0)
                {
                    Console.WriteLine("\nNo words were identified in your input.");
                }
                else
                {
                    Console.WriteLine($"\nThere are {matches.Count} words in your string:");
                    for (int ctr = 0; ctr < matches.Count; ctr++)
                    {
                        Console.WriteLine($"   #{ctr,2}: '{matches[ctr].Value}' at position {matches[ctr].Index}");
                    }
                }
            }
        }
    }
    
    Imports System.Text.RegularExpressions
    
    Namespace Applications.ConsoleApps
        Public Module ConsoleParser
            Public Sub Main()
                Console.WriteLine("Enter any text, followed by <Enter>:")
                Console.WriteLine()
                Dim s = Console.ReadLine()
                ShowWords(s)
                Console.Write($"{vbCrLf}Press any key to continue... ")
                Console.ReadKey()
            End Sub
    
            Private Sub ShowWords(s As String)
                Dim pattern = "\w+"
                Dim matches = Regex.Matches(s, pattern)
                Console.WriteLine()   
                If matches.Count = 0 Then
                    Console.WriteLine("No words were identified in your input.")
                Else
                    Console.WriteLine($"There are {matches.Count} words in your string:")
                    For ctr = 0 To matches.Count - 1
                        Console.WriteLine($"   #{ctr,2}: '{matches(ctr).Value}' at position {matches(ctr).Index}")
                    Next
                End If
                Console.WriteLine()
            End Sub
        End Module
    End Namespace
    
    
  3. Determine si quiere usar el modo de globalización invariable.Determine whether you want to use globalization invariant mode.

    Especialmente si la aplicación es para Linux, puede reducir el tamaño total de la implementación si aprovecha las ventajas del modo de globalización invariable.Particularly if your app targets Linux, you can reduce the total size of your deployment by taking advantage of globalization invariant mode. El modo de globalización invariable es útil para aquellas aplicaciones que no son globales y que pueden usar las convenciones de formato, las convenciones de mayúsculas y minúsculas y el criterio de ordenación y la comparación de cadenas de la referencia cultural invariable.Globalization invariant mode is useful for applications that are not globally aware and that can use the formatting conventions, casing conventions, and string comparison and sort order of the invariant culture.

    Para habilitar el modo invariable, haga clic con el botón derecho en el proyecto (no en la solución) en el Explorador de soluciones y seleccione Editar SCD.csproj o Editar SCD.vbproj.To enable invariant mode, right-click on your project (not the solution) in Solution Explorer, and select Edit SCD.csproj or Edit SCD.vbproj. Luego agregue las siguientes líneas resaltadas al archivo:Then add the following highlighted lines to the file:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <RuntimeHostConfigurationOption Include="System.Globalization.Invariant" Value="true" />
      </ItemGroup> 
    
    </Project>
    
  4. Cree una compilación de depuración de la aplicación.Create a Debug build of your application.

    Seleccione Compilar > Compilar solución.Select Build > Build Solution. También puede compilar y ejecutar la versión de depuración de la aplicación seleccionando Depurar > Iniciar depuración.You can also compile and run the Debug build of your application by selecting Debug > Start Debugging. Este paso de depuración permite identificar problemas con la aplicación cuando se ejecuta en la plataforma de host.This debugging step lets you identify problems with your application when it's running on your host platform. Pero, aun así, tiene que probarla en cada una de las plataformas de destino.You still will have to test it on each of your target platforms.

    Si ha habilitado el modo de globalización invariable, asegúrese especialmente de probar si la ausencia de datos dependientes de la referencia cultural es adecuada para la aplicación.If you've enabled globalization invariant mode, be particularly sure to test whether the absence of culture-sensitive data is suitable for your application.

Una vez que haya terminado de depurar, puede publicar la implementación independiente:Once you've finished debugging, you can publish your self-contained deployment:

Después de depurar y probar el programa, cree los archivos que se implementarán con la aplicación para cada una de las plataformas de destino.After you've debugged and tested the program, create the files to be deployed with your app for each platform that it targets.

Para publicar la aplicación desde Visual Studio, siga estos pasos:To publish your app from Visual Studio, do the following:

  1. Definir las plataformas de destino de la aplicación.Define the platforms that your app will target.

    1. Haga clic con el botón derecho en el proyecto (no en la solución) en el Explorador de soluciones y seleccione Editar SCD.csproj.Right-click on your project (not the solution) in Solution Explorer and select Edit SCD.csproj.

    2. Cree una etiqueta <RuntimeIdentifiers> en la sección <PropertyGroup> del archivo csproj que defina las plataformas a las que se destina la aplicación y especifique el identificador en tiempo de ejecución (RID) de cada una.Create a <RuntimeIdentifiers> tag in the <PropertyGroup> section of your csproj file that defines the platforms your app targets, and specify the runtime identifier (RID) of each platform that you target. También debe agregar un punto y coma para separar los RID.You also need to add a semicolon to separate the RIDs. Para ver una lista de identificadores de tiempo de ejecución, consulte el catálogo de identificadores de tiempo de ejecución.See Runtime identifier catalog for a list of runtime identifiers.

    Por ejemplo, el ejemplo siguiente indica que la aplicación se ejecuta en sistemas operativos Windows 10 de 64 bits y OS X versión 10.11 de 64 bits.For example, the following example indicates that the app runs on 64-bit Windows 10 operating systems and the 64-bit OS X Version 10.11 operating system.

    <PropertyGroup>
       <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
    </PropertyGroup>
    

    El elemento <RuntimeIdentifiers> puede ir en cualquier <PropertyGroup> que tenga en el archivo csproj.The <RuntimeIdentifiers> element can go into any <PropertyGroup> that you have in your csproj file. Más adelante en esta sección aparece un ejemplo completo del archivo csproj.A complete sample csproj file appears later in this section.

  2. Publique la aplicación.Publish your app.

    Después de depurar y probar el programa, cree los archivos que se implementarán con la aplicación para cada una de las plataformas de destino.After you've debugged and tested the program, create the files to be deployed with your app for each platform that it targets.

    Para publicar la aplicación desde Visual Studio, siga estos pasos:To publish your app from Visual Studio, do the following:

    1. Cambie la configuración de la solución de Depurar a Versión en la barra de herramientas para compilar una compilación de versión (en lugar de depuración) de la aplicación.Change the solution configuration from Debug to Release on the toolbar to build a Release (rather than a Debug) version of your app.

    2. Haga clic con el botón derecho en el proyecto (no en la solución) en el Explorador de soluciones y seleccione Publicar.Right-click on the project (not the solution) in Solution Explorer and select Publish.

    3. En la pestaña Publicar, seleccione Publicar.In the Publish tab, select Publish. Visual Studio escribe los archivos que componen la aplicación en el sistema de archivos local.Visual Studio writes the files that comprise your application to the local file system.

    4. La pestaña Publicar muestra ahora un solo perfil, FolderProfile.The Publish tab now shows a single profile, FolderProfile. Los valores de configuración del perfil se muestran en la sección Resumen de la pestaña. Tiempo de ejecución de destino identifica qué tiempo de ejecución se ha publicado, y Ubicación de destino identifica dónde se escriben los archivos de la implementación independiente.The profile's configuration settings are shown in the Summary section of the tab. Target Runtime identifies which runtime has been published, and Target Location identifies where the files for the self-contained deployment were written.

    5. De forma predeterminada, Visual Studio escribe todos los archivos publicados en un único directorio.Visual Studio by default writes all published files to a single directory. Para mayor comodidad, es mejor crear perfiles distintos para cada tiempo de ejecución de destino y colocar los archivos publicados en un directorio específico de la plataforma.For convenience, it's best to create separate profiles for each target runtime and to place published files in a platform-specific directory. Esto implica la creación de un perfil de publicación independiente para cada plataforma de destino.This involves creating a separate publishing profile for each target platform. Por tanto, vuelva a compilar la aplicación para cada plataforma siguiendo estos pasos:So now rebuild the application for each platform by doing the following:

      1. Seleccione Crear nuevo perfil en el cuadro de diálogo Publicar.Select Create new profile in the Publish dialog.

      2. En el cuadro de diálogo Elegir un destino de publicación, cambie la ubicación Elegir una carpeta a bin\Release\PublishOutput\win10-x64.In the Pick a publish target dialog, change the Choose a folder location to bin\Release\PublishOutput\win10-x64. Seleccione Aceptar.Select OK.

      3. Seleccione el nuevo perfil (FolderProfile1) en la lista de perfiles y asegúrese de que el Tiempo de ejecución de destino es win10-x64.Select the new profile (FolderProfile1) in the list of profiles, and make sure that the Target Runtime is win10-x64. Si no lo es, seleccione Configuración.If it isn't, select Settings. En el cuadro de diálogo Configuración de perfil, cambie Tiempo de ejecución de destino por win10-x64 y haga clic en Guardar.In the Profile Settings dialog, change the Target Runtime to win10-x64 and select Save. En caso contrario, haga clic en Cancelar.Otherwise, select Cancel.

      4. Seleccione Publicar para publicar la aplicación para las plataformas de 64 bits de Windows 10.Select Publish to publish your app for 64-bit Windows 10 platforms.

      5. Siga los pasos anteriores de nuevo para crear un perfil para la plataforma osx.10.11-x64.Follow the previous steps again to create a profile for the osx.10.11-x64 platform. La Ubicación de destino es bin\Release\PublishOutput\osx.10.11-x64 y el Tiempo de ejecución de destino es osx.10.11-x64.The Target Location is bin\Release\PublishOutput\osx.10.11-x64, and the Target Runtime is osx.10.11-x64. El nombre que Visual Studio asigna a este perfil es FolderProfile2.The name that Visual Studio assigns to this profile is FolderProfile2.

    Cada ubicación de destino contiene el conjunto completo de archivos (los archivos de aplicación y todos los archivos de .NET Core) necesarios para iniciar la aplicación.Each target location contains the complete set of files (both your app files and all .NET Core files) needed to launch your app.

Junto con los archivos de la aplicación, el proceso de publicación emite un archivo de base de datos de programa (.pdb) que contiene información de depuración sobre la aplicación.Along with your application's files, the publishing process emits a program database (.pdb) file that contains debugging information about your app. El archivo es útil principalmente para depurar excepciones.The file is useful primarily for debugging exceptions. Puede decidir no empaquetarlo con los archivos de la aplicación.You can choose not to package it with your application's files. Pero se debe guardar en caso de que se quiera depurar la compilación de versión de la aplicación.You should, however, save it in the event that you want to debug the Release build of your app.

Implemente los archivos publicados de la forma que quiera.Deploy the published files in any way you like. Por ejemplo, puede empaquetarlos en un archivo ZIP, usar un simple comando copy o implementarlos con el paquete de instalación que prefiera.For example, you can package them in a Zip file, use a simple copy command, or deploy them with any installation package of your choice.

A continuación se muestra el archivo csproj completo para este proyecto.The following is the complete csproj file for this project.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
  </PropertyGroup>
</Project>

Implementación autocontenida con dependencias de tercerosSelf-contained deployment with third-party dependencies

Implementar una implementación independiente con una o varias dependencias de terceros implica agregar las dependencias.Deploying a self-contained deployment with one or more third-party dependencies involves adding the dependencies. Se requieren los pasos adicionales siguientes antes de poder compilar la aplicación:The following additional steps are required before you can build your app:

  1. Use el Administrador de paquetes NuGet para agregar una referencia a un paquete de NuGet para el proyecto y, si el paquete todavía no está disponible en el sistema, instálelo.Use the NuGet Package Manager to add a reference to a NuGet package to your project; and if the package is not already available on your system, install it. Para abrir el administrador de paquetes, seleccione Herramientas > Administrador de paquetes NuGet > Administrar paquetes NuGet para la solución.To open the package manager, select Tools > NuGet Package Manager > Manage NuGet Packages for Solution.

  2. Confirme que las dependencias de terceros (por ejemplo, Newtonsoft.Json) están instaladas en el sistema y, si no es así, instálelas.Confirm that your third-party dependencies (for example, Newtonsoft.Json) are installed on your system and, if they aren't, install them. La pestaña Instalado enumera los paquetes de NuGet instalados en el sistema.The Installed tab lists NuGet packages installed on your system. Si Newtonsoft.Json no aparece ahí, seleccione la pestaña Examinar y escriba "Newtonsoft.Json" en el cuadro de búsqueda.If Newtonsoft.Json is not listed there, select the Browse tab and enter "Newtonsoft.Json" in the search box. Seleccione Newtonsoft.Json y, en el panel derecho, seleccione el proyecto antes de hacer clic en Instalar.Select Newtonsoft.Json and, in the right pane, select your project before selecting Install.

  3. Si Newtonsoft.Json ya está instalado en el sistema, agréguelo al proyecto seleccionando el proyecto en el panel derecho de la pestaña Administrar paquetes para la solución.If Newtonsoft.Json is already installed on your system, add it to your project by selecting your project in the right pane of the Manage Packages for Solution tab.

A continuación se muestra el archivo csproj completo de este proyecto:The following is the complete csproj file for this project:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="10.0.2" />
  </ItemGroup>
</Project>

Al implementar la aplicación, los archivos de aplicación también contienen las dependencias de terceros usadas en la aplicación.When you deploy your application, any third-party dependencies used in your app are also contained with your application files. No se requieren las bibliotecas de terceros en el sistema en el que se ejecuta la aplicación.Third-party libraries aren't required on the system on which the app is running.

Solo puede implementar una implementación autocontenida con una biblioteca de terceros en plataformas compatibles con esa biblioteca.You can only deploy a self-contained deployment with a third-party library to platforms supported by that library. Esto es similar a tener dependencias de terceros con dependencias nativas en la implementación dependiente de la plataforma, donde las dependencias nativas no existirán en la plataforma de destino a menos que se hayan instalado allí previamente.This is similar to having third-party dependencies with native dependencies in your framework-dependent deployment, where the native dependencies won't exist on the target platform unless they were previously installed there.

Vea tambiénSee also