Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie eine App über den apphost starten, Environment.GetCommandLineArgs() wird nun der Aufrufname beibehalten, einschließlich eines relativen Pfads oder symlink-Namens. Das Verhalten für dotnet <application.dll> ist unverändert.
Eingeführt in Version
.NET 11 Vorschau 7
Bisheriges Verhalten
Wenn Sie zuvor eine App über ihren apphost gestartet haben, gab Environment.GetCommandLineArgs()[0] den verwalteten Assemblypfad oder den aufgelösten ausführbaren Pfad statt des Aufrufnamens zurück.
Neues Verhalten
Ab .NET 11 bewahrt Environment.GetCommandLineArgs()[0] beim Starten einer App über den apphost den Aufrufnamen, einschließlich relativer Pfade und Symlinknamen. Wenn special_myapp z. B. ein Symlink zu myapp ist und Sie ./special_myapp ausführen, ist der Wert ./special_myapp.
Wenn Sie eine App mit dotnet <application.dll> starten, ist das Verhalten unverändert.
Art der einschneidenden Änderung
Diese Änderung ist eine Verhaltensänderung.
Grund für die Änderung
Um .NET mit dem systemeigenen Prozessverhalten auszurichten, behält die Laufzeit jetzt den beim Start bereitgestellten Wert von argv[0] bei. Mit diesem Verhalten kann eine App auch unterscheiden, welcher Symlinkname sie gestartet hat.
Empfohlene Maßnahme
Um den ausführbaren Pfad abzurufen, verwenden Sie Environment.ProcessPath. Verwenden Sie Assembly.GetEntryAssembly()?.Location zum Abrufen des Speicherorts der Assembly mit verwaltetem Einstiegspunkt (siehe Assembly.GetEntryAssembly() und Assembly.Location). Der Speicherort ist eine leere Zeichenfolge für gebündelte Assemblys in Einzeldatei-Apps.
Environment.GetCommandLineArgs()[0] Verwenden Sie weiterhin, wenn Sie den Aufrufnamen benötigen.