Почему не работает Process.Start() в AvaloniaUI?

Рейтинг: 3Ответов: 1Опубликовано: 08.02.2023

Пробовал по разному, но выходит одно и тоже. При любом способе запуска Process.Start в AvaloniaUI ничего не происходит.

Вот мои попытки:

Process.Start("calc.exe"); ///Ничего не происходит

Task.Run(() => Process.Start("calc.exe")); ///так же

Но когда вызывается в консольном, WPF и WinForms программе, все работает.

Кстати, в предпросмотре UI в дизайнере, все процессы запускаются, даже по нескольку раз при изменении XAML.

На этом фото запустился калькулятор, при внесении правки в XAML разметку

Файл проекта:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <Nullable>enable</Nullable>
    <!--Avalonia doesen't support TrimMode=link currently,but we are working on that https://github.com/AvaloniaUI/Avalonia/issues/6892 -->
    <TrimMode>copyused</TrimMode>
    <BuiltInComInteropSupport>true</BuiltInComInteropSupport>
  </PropertyGroup>
  <ItemGroup>
    <None Remove=".gitignore" />
  </ItemGroup>
  <ItemGroup>
    <!--This helps with theme dll-s trimming.
    If you will publish your application in self-contained mode with p:PublishTrimmed=true and it will use Fluent theme Default theme will be trimmed from the output and vice versa.
    https://github.com/AvaloniaUI/Avalonia/issues/5593 -->
    <TrimmableAssembly Include="Avalonia.Themes.Fluent" />
    <TrimmableAssembly Include="Avalonia.Themes.Default" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Avalonia" Version="0.10.18" />
    <PackageReference Include="Avalonia.Desktop" Version="0.10.18" />
    <!--Condition below is needed to remove Avalonia.Diagnostics package from build output in Release configuration.-->
    <PackageReference Condition="'$(Configuration)' == 'Debug'" Include="Avalonia.Diagnostics" Version="0.10.18" />
    <PackageReference Include="XamlNameReferenceGenerator" Version="1.3.4" />
  </ItemGroup>
</Project>

Как решить проблему, может кто знает?

Ответы

▲ 1Принят

Ответ из комментариев(рабочий):

Задать параметр UseShellExecute = true;

Пример:

Process.Start(new ProcessStartInfo("calc.exe") { UseShellExecute = true });