Передача аргументов командной строки в загруженное приложение WPF Core 3.0 - PullRequest
0 голосов
/ 16 октября 2019

У меня есть приложение WPF, которое работает на Core 3.0. Я опубликовал его через Windows Application Packaging Project. Поскольку это приложение WPF, мне нужно было добавить его в appxmanifest:

<Extensions>
  <uap5:Extension
    Category="windows.appExecutionAlias"
    Executable="MyApp.exe"
    EntryPoint="MyApp">
    <uap5:AppExecutionAlias>
      <uap5:ExecutionAlias Alias="MyApp.exe" />
    </uap5:AppExecutionAlias>
  </uap5:Extension>
</Extensions>

Затем я опубликовал приложение WPF как загруженное, и оно прекрасно работает, когда я запускаю его из меню Пуск Windows. Проблема в том, что мне нужно запустить его из командной строки, и мне нужно передать несколько аргументов командной строки. Но когда я запускаю приложение из командной строки, вводя псевдоним, оно передает только этот аргумент: -ServerName: App.App7adfdfg54shnsdfh87asrgsdfg1.mca, который не является моим аргументом - мои аргументы вообще не передаются. Затем я попытался добавить это в мой файл WPF .csproj:

<Reference Include="Windows.Foundation.UniversalApiContract">
  <HintPath>C:\Program Files (x86)\Windows Kits\10\References\10.0.18362.0\Windows.Foundation.UniversalApiContract\8.0.0.0\Windows.Foundation.UniversalApiContract.winmd</HintPath>
  <IsWinMDFile>true</IsWinMDFile>
</Reference>

, чтобы я мог вызвать это в своем файле WPF App.xaml.cs:

using test = Windows.ApplicationModel.AppInstance;
...
Windows.ApplicationModel.Activation.IActivatedEventArgs args = test.GetActivatedEventArgs();

Но после выполненияэто, аргументы нулевые. Есть идеи, как решить эту проблему и передать аргументы моему приложению WPF? Благодаря.

1 Ответ

0 голосов
/ 22 октября 2019

Мне не хватало нескольких строк в файле .appxmanifestlines. Добавьте ссылку:

xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" 

Добавьте ее в IgnorableNamespaces:

IgnorableNamespaces="uap uap5 rescap desktop4">

И добавьте это в AppExecutionAlias:

<uap5:AppExecutionAlias desktop4:Subsystem="console">
     <uap5:ExecutionAlias Alias="DeploymentScripts.UI.exe" />
</uap5:AppExecutionAlias>

Тогда можно получить доступ даже к аргументамот Environment.GetCommandLineArgs()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...