Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

629
Visualizações
¿Cómo publicar un ejecutable de C# autónomo que hace referencia a otro ejecutable?

Tengo dos proyectos C# .NET 5, llamémoslos A y B. Ambos son ejecutables (no DLL). El proyecto A hace referencia al proyecto B. Me gustaría publicar el proyecto A como un ejecutable autónomo (aunque no en un solo archivo, si eso importa). Estoy usando este comando para iniciar el proceso de publicación:

dotnet publish A.csproj -c Release --self-contained -r win-x64 /p:PublishTrimmed=true /p:PublishReadyToRun=true

Sin embargo, esto produce el siguiente error al intentar compilar el proyecto B (que es obligatorio ya que el proyecto A hace referencia a él):

error NETSDK1031: It is not supported to build or publish a self-contained application without specifying a RuntimeIdentifier. You must either specify a RuntimeIdentifier or set SelfContained to false.

Pero como puede ver, estoy (¿creo?) especificando un identificador de tiempo de ejecución con -r win-x64 . Supongo que el identificador de tiempo de ejecución que especifiqué en la línea de comandos no se pasa al compilar el proyecto B. ¿Cómo puedo solucionar esto sin deshabilitar SelfContained?

Mi versión de dotnet es:

 dotnet --version 5.0.400

EDITAR: No quiero poner <RuntimeIdentifier>win-x64</RuntimeIdentifier> en mis archivos de proyecto porque necesito compilar para múltiples tiempos de ejecución diferentes y quiero poder controlar eso a través de la línea de comando.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Gracias a un par de comentarios en este problema de Github , pude descubrir cómo compilarlo:

  1. Elimina la --self-contained de la línea de comandos. (Según los documentos , "El valor predeterminado es verdadero si se especifica un identificador de tiempo de ejecución y el proyecto es un proyecto ejecutable (no un proyecto de biblioteca)").

  2. Agregue /p:ValidateExecutableReferencesMatchSelfContained=false a la línea de comandos. Esto era necesario para suprimir el error: "El proyecto al que se hace referencia 'B.csproj' es un ejecutable no autónomo. Un ejecutable no autónomo no puede ser referenciado por un ejecutable autónomo".

  3. Si desea poder ejecutar el archivo B.exe que se generó al compilar el proyecto A, deberá agregar un archivo B.deps.json adecuado a la salida de la compilación. La forma más fácil que he encontrado para hacer esto es hacer una compilación independiente separada de B y luego simplemente copiar el archivo B.deps.json desde allí. (Y si está construyendo con PublishTrimmed como yo, es posible que deba agregar entradas en su archivo TrimmerRoots.xml para evitar que el código que necesita el proyecto B se recorte de la salida).

Después de hacer estas dos cosas, mi proyecto ahora se está construyendo y ejecutando con éxito. He verificado que todavía funciona incluso en una máquina que no tiene instalado .NET Runtime y, por lo tanto, la compilación realmente es autónoma como se desea.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda