如何同时支持UWP命令行和UWP UI?

时间:2018-06-02 12:08:08

标签: c# uwp

我当前的应用程序如下所示:

public static class Program
{
    //Default code-gen unless we include DISABLE_XAML_GENERATED_MAIN in the build properties.
    static void Main(string[] args)
    {
        IActivatedEventArgs activatedArgs = AppInstance.GetActivatedEventArgs();
        if(ActivationKind.CommandLineLaunch.Equals(activatedArgs?.Kind))
        {
            CommandLineActivatedEventArgs cmdLineArgs = activatedArgs as CommandLineActivatedEventArgs;
            CommandLineActivationOperation operation = cmdLineArgs.Operation;
            string activationPath = operation.CurrentDirectoryPath;
            System.Console.WriteLine("foo");
        }
        else
        {
            global::Windows.UI.Xaml.Application.Start((p) => new App());
        }

    }
}

我的清单:

    <Application Id="App" Executable="$targetnametoken$.exe" desktop4:SupportsMultipleInstances="true">
    <uap5:Extension Category="windows.appExecutionAlias" [...]

根据用户是从命令提示符还是开始菜单启动应用程序,UI将如图所示显示。但是当用户从cmd启动应用程序时,Console.WriteLine(&#34; foo&#34;)的输出不会显示。

因此我添加了desktop4:Subsystem="console"。这导致控制台窗口无论用户是否为用户从startmneu或命令行启动应用程序的应用程序启动,都会无法启动。 我怎样才能确保只从命令提示符开始显示控制台窗口?我是否必须创建第二个uwp项目?

1 个答案:

答案 0 :(得分:0)

UWP控制台应用还有许多其他注意事项。例如只有C ++ / WinRT和C ++ / CX UWP应用程序可能是控制台应用程序。它必须以Desktop或ioT项目为目标。 形成你的代码,我可以弄清楚它是UWP应用程序。即使它是UWP应用程序,也无法在两个模型 UI 控制台中启动它。因为,它可能无法创建窗口。如果您有更多信息,可以参考C reate a Universal Windows Platform console app