Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 50975|Resposta: 0

[Fonte] .NET Core libera um problema de caminho de arquivo único

[Copiar link]
Postado em 28-03-2021 13:56:32 | | | |
Usando o .NET Core 3.1 para lançar um aplicativo de console de arquivo único, rodando em um sistema Linux, o principal que o código do programa faz é muito simples, ou seja,Leia a saída do arquivo de configuração no diretório do programa! No entanto, quando você publica um único arquivo para rodar no Linux, ele diz que o arquivo não foi encontrado.

Os novos recursos do .NET Core lançam um executável de arquivo único
https://www.itsvse.com/thread-8273-1-1.html

Fique atento ao System.Environment.CurrentDirectory para obter o diretório atual
https://www.itsvse.com/thread-9464-1-1.html
Código de teste:

A saída é a seguinte:

AppDomain.CurrentDomain.SetupInformation.ApplicationBase:/var/tmp/.net/root/ImageWatermark/e5snojro.qyv/
Environment.CurrentDirectory:/root/test
AppDomain.CurrentDomain.BaseDirectory:/var/tmp/.net/root/ImageWatermark/e5snojro.qyv/


Ao publicar uma aplicação .NET Core como um único arquivo, executando-a em um sistema CentOS, o programa é autoextraído e liberado/var/tmp/.net/root/e então chame o programa liberado no diretório, o que também pode explicar por que o programa não consegue encontrar o arquivo de configuração.

solução

Usando System.Environment.CurrentDirectory para ler o caminho do programa, System.Environment.CurrentDirectory realmente recebe o diretório atual, mas se o programa A chamar o programa B e o programa B usar System.Environment.CurrentDirectory para obter o diretório. Então, o diretório obtido no programa B não é mais o diretório onde a aplicação B está localizada; Ele se torna o diretório onde A está localizado.





Anterior:Erro do .NET Core Linux: Não consegui encontrar um pacote válido de ICU instalado...
Próximo:Problemas com marcas d'água do .NET Core em imagens do Linux
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com