Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При запуске приложения через его apphost теперь сохраняется имя вызова, Environment.GetCommandLineArgs() включая относительный путь или имя symlink. Поведение dotnet <application.dll> не изменилось.
Представленная версия
.NET 11 предварительная версия 7
Предыдущее поведение
Ранее при запуске приложения через его apphost значение Environment.GetCommandLineArgs()[0] возвращало путь к управляемой сборке или разрешенный путь к исполняемому файлу, а не имя вызова.
Новое поведение
Начиная с .NET 11, при запуске приложения через его apphost Environment.GetCommandLineArgs()[0] сохраняет имя вызова, включая относительные пути и имена символических ссылок. Например, если special_myapp — символьная ссылка на myapp, и вы выполняете ./special_myapp, значение равно ./special_myapp.
При запуске приложения с помощью dotnet <application.dll> поведение не изменяется.
Тип разрушающего изменения
Это изменение поведения.
Причина изменения
Чтобы привести .NET в соответствие с поведением нативного процесса, среда выполнения теперь сохраняет значение argv[0], предоставленное при запуске. Это поведение также позволяет приложению различать, под каким именем символической ссылки оно было запущено.
Рекомендуемое действие
Чтобы получить путь к исполняемому файлу, используйте Environment.ProcessPath. Чтобы получить расположение управляемой входной сборки, используйте Assembly.GetEntryAssembly()?.Location (см. Assembly.GetEntryAssembly() и Assembly.Location). Расположение — пустая строка для встроенных сборок в однофайловых приложениях. Продолжайте использовать Environment.GetCommandLineArgs()[0], когда вам нужно имя вызова.