我有一个 WinUI3 应用程序,我想将它部署为未打包的应用程序,即不使用 MSIX 打包格式的应用程序。
我按照此处给出的说明进行操作:未打包 C# WinUI 3 应用程序的说明,并且运行良好。我可以启动在 bin 文件夹中创建的 exe 文件(调试或发布)或使用“未打包”配置文件调试应用程序。
我尝试的下一件事是在运行时引用 Windows App SDK 以使用它提供的功能。这不起作用,即应用程序崩溃或更准确地说只是停止。
我所做的是遵循以下步骤:高级教程:构建和部署使用 Windows App SDK 的未打包应用程序
在他们的示例中,他们使用具有此启动代码的控制台应用程序,您可以Bootstrap.Initialize()
在他们的代码中看到对的调用:
namespace DynamicDependenciesTest
{
class Program
{
static void Main(string[] args)
{
Bootstrap.Initialize(0x00010000); // Call wrapper that enables the Windows App SDK APIs
Console.WriteLine("Hello World!");
// Release the DDLM and clean up.
Bootstrap.Shutdown();
}
}
}
在我的 WinUI3 应用程序中,我将调用插入到类Bootstrap.Initialize()
的构造函数中App
。但是,一旦Initialize
执行了调用 to 的行,应用程序就会停止,没有可见的异常。以下两个实现都显示相同的行为。
版本 1:
/// <summary>
/// Initializes the singleton application object. This is the first line of authored code
/// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary>
public App()
{
this.InitializeComponent();
Bootstrap.Initialize(0x00010000); // --> application stops after this line
}
版本 2:
/// <summary>
/// Initializes the singleton application object. This is the first line of authored code
/// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary>
public App()
{
this.InitializeComponent();
try
{
int hresult;
bool flag = Bootstrap.TryInitialize(0x00010000, out hresult); // --> application stops after this line
}
catch (Exception e)
{
}
}
有谁知道这种行为的可能原因?
WinUI3 项目引用了“Microsoft.WindowsAppSDK”Nuget 包,我还在我的系统上安装了Windows App SDK(稳定版 1)。
这是我的项目文件的第一部分:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0-windows10.0.19041</TargetFramework>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<RootNamespace>Test.UI</RootNamespace>
<ApplicationManifest>app.manifest</ApplicationManifest>
<Platforms>x86;x64;arm64</Platforms>
<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
<PublishProfile>win10-$(Platform).pubxml</PublishProfile>
<UseWinUI>true</UseWinUI>
<ApplicationIcon>Resources\TASKL.ICO</ApplicationIcon>
<EnableDefaultPageItems>false</EnableDefaultPageItems>
<EnablePreviewMsixTooling>true</EnablePreviewMsixTooling>
<WindowsPackageType>None</WindowsPackageType> // unpackaged
</PropertyGroup>