Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Quando inicia uma aplicação através do seu apphost, Environment.GetCommandLineArgs() agora preserva o nome da invocação, incluindo um caminho relativo ou nome do symlink. O comportamento para dotnet <application.dll> mantém-se inalterado.
Versão introduzida
.NET 11 Pré-visualização 7
Comportamento anterior
Anteriormente, ao iniciar uma aplicação através do respetivo apphost, Environment.GetCommandLineArgs()[0] devolvia o caminho do assembly gerido ou o caminho do executável resolvido, em vez do nome da invocação.
Novo comportamento
A partir do .NET 11, ao iniciar uma aplicação através do seu apphost, Environment.GetCommandLineArgs()[0] preserva o nome da invocação, incluindo caminhos relativos e nomes de symlinks. Por exemplo, se special_myapp for um symlink para myapp, e executares ./special_myapp, o valor é ./special_myapp.
Quando inicias uma aplicação com dotnet <application.dll>, o comportamento mantém-se inalterado.
Tipo de mudança disruptiva
Esta mudança é uma mudança comportamental.
Motivo da mudança
Para alinhar o .NET com o comportamento nativo dos processos, o runtime preserva agora o valor de argv[0] fornecido aquando do arranque. Este comportamento também permite a uma aplicação distinguir qual o nome do symlink que o lançou.
Ação recomendada
Para obter o caminho do executável, use Environment.ProcessPath. Para obter a localização do assembly de entrada gerido, use Assembly.GetEntryAssembly()?.Location (ver Assembly.GetEntryAssembly() e Assembly.Location). A localização é uma cadeia vazia para assemblies agrupados em aplicações de ficheiro único. Continua a usar Environment.GetCommandLineArgs()[0] quando precisares do nome da invocação.