Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si avvia un'app tramite il relativo apphost, Environment.GetCommandLineArgs() ora mantiene il nome di invocazione, incluso un percorso relativo o un nome di collegamento simbolico. Il comportamento per dotnet <application.dll> è invariato.
Versione introdotta
.NET 11 Preview 7
Comportamento precedente
In precedenza, quando veniva avviata un'app tramite il relativo apphost, Environment.GetCommandLineArgs()[0] restituiva il percorso dell'assembly gestito o il percorso eseguibile risolto, anziché il nome di invocazione.
Nuovo comportamento
A partire da .NET 11, quando si avvia un'app tramite il relativo apphost, Environment.GetCommandLineArgs()[0] mantiene il nome di invocazione, inclusi i percorsi relativi e i nomi di collegamento simbolico. Ad esempio, se special_myapp è un collegamento simbolico a myappe si esegue ./special_myapp, il valore è ./special_myapp.
Quando si avvia un'app con dotnet <application.dll>, il comportamento rimane invariato.
Tipo di cambiamento che interrompe la compatibilità
Questa modifica è una modifica funzionale.
Motivo della modifica
Per allineare .NET al comportamento del processo nativo, il runtime preserva ora il valore di argv[0] fornito all'avvio. Questo comportamento consente anche a un'app di distinguere quale nome di collegamento simbolico l'ha avviata.
Azione consigliata
Per ottenere il percorso eseguibile, usare Environment.ProcessPath. Per ottenere il percorso dell'assembly di avvio gestito, usare Assembly.GetEntryAssembly()?.Location (vedere Assembly.GetEntryAssembly() e Assembly.Location). La posizione è una stringa vuota per gli assembly in bundle nelle app a file singolo. Continuare a usare Environment.GetCommandLineArgs()[0] quando è necessario il nome di invocazione.