Estoy ejecutando el siguiente comando para publicar el proyecto de API web .NET CORE 5.0 usando la línea de comando en el cuadro de Windows 10 .
c:\test\Service>dotnet publish -c release Emp.sln --framework net5.0 /p:DebugType=None /p:DebugSymbols=false --nologo --self-contained --runtime linux-x64 -vmPero estoy recibiendo el siguiente error:
C:\ProgramFiles\dotnet\sdk\5.0.403\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(126,5): error NETSDK1031: no se admite la creación o publicación de un auto- aplicación contenida sin especificar un RuntimeIdentifier. Debe especificar un RuntimeIdentifier o establecer SelfContained en false. [c:\prueba\Servicio\emp.csproj]
¿Por qué recibo este error cuando especifico el indicador --runtime? Puedo publicar usando Visual Studio sin ningún problema.
Puedo resolver el problema agregando la <RuntimeIdentifier>linux-x64</RuntimeIdentifier> en el archivo .csproj:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> <RuntimeIdentifier>linux-x64</RuntimeIdentifier>Con esto, puedo crear una solución usando la línea de comandos, pero cuando ejecuto la aplicación a través de Visual Studio en una máquina con Windows, aparece el error:
El ejecutable de depuración ''c:\user\testuser\emp\bin\debug\net5.0\linux-x64\textdb.exe' especificado en el perfil de depuración 'emp' no existe
Puedo resolver el segundo problema (poder construir en Windows usando Visual Studio y poder publicar apuntando a Linux usando la línea de comando) agregando esto al archivo csproj. Especificación de múltiples valores en RuntimeIdentifiers
<PropertyGroup> <TargetFramework>net5.0</TargetFramework> <RuntimeIdentifiers>win10-x64;linux-x64</RuntimeIdentifiers> </PropertyGroup>