Я пытаюсь обновить свое приложение UWP до WinUI3 и не могу заставить AppService работать в WinUI3.
До сих пор я пробовал следующее:
Документация Microsoft по AppServices отсутствует, и доступна только документация UWP.
Можно ли заставить AppService работать с WinUI3? И если да, то каковы требования к проектам?
Вот моя текущая настройка, мало чем отличается от версии UWP.
RuntimeComponent1.csproj
<Project Sdk = "Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0-windows10.0.22621</TargetFramework>
<OutputType>Library</OutputType>
<DefaultLanguage>en-US</DefaultLanguage>
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
<AllowCrossPlatformRetargeting>false</AllowCrossPlatformRetargeting>
<CsWinRTComponent>true</CsWinRTComponent>
<UseWinUI>true</UseWinUI>
<ApplicationManifest>app.manifest</ApplicationManifest>
<EnablePreviewMsixTooling>true</EnablePreviewMsixTooling>
<Platforms>x86;x64;arm64</Platforms>
<PublishProfile>win10-$(Platform).pubxml</PublishProfile>
<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
</PropertyGroup>
<PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition = " '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition = "'$(Configuration)|$(Platform)' == 'Debug|x86'">
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<UseVSHostingProcess>false</UseVSHostingProcess>
</PropertyGroup>
<PropertyGroup Condition = "'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<UseVSHostingProcess>false</UseVSHostingProcess>
</PropertyGroup>
<PropertyGroup Condition = "'$(Configuration)|$(Platform)' == 'Debug|ARM'">
<OutputPath>bin\ARM\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<UseVSHostingProcess>false</UseVSHostingProcess>
</PropertyGroup>
<PropertyGroup Condition = "'$(Configuration)|$(Platform)' == 'Release|ARM'">
<OutputPath>bin\ARM\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<UseVSHostingProcess>false</UseVSHostingProcess>
</PropertyGroup>
<PropertyGroup Condition = "'$(Configuration)|$(Platform)' == 'Debug|ARM64'">
<OutputPath>bin\ARM64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<UseVSHostingProcess>false</UseVSHostingProcess>
</PropertyGroup>
<PropertyGroup Condition = "'$(Configuration)|$(Platform)' == 'Release|ARM64'">
<OutputPath>bin\ARM64\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<UseVSHostingProcess>false</UseVSHostingProcess>
</PropertyGroup>
<PropertyGroup Condition = "'$(Configuration)|$(Platform)' == 'Debug|x64'">
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<UseVSHostingProcess>false</UseVSHostingProcess>
</PropertyGroup>
<PropertyGroup Condition = "'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<UseVSHostingProcess>false</UseVSHostingProcess>
</PropertyGroup>
<ItemGroup>
<PackageReference Include = "Microsoft.WindowsAppSDK" Version = "1.1.0" />
<PackageReference Include = "Microsoft.Windows.CsWinRT" Version = "2.0.2" />
</ItemGroup>
</Project>
MyAppService.cs
using System;
using Windows.ApplicationModel.Background;
namespace RuntimeComponent1
{
public sealed class MyAppService : IBackgroundTask
{
public void Run(IBackgroundTaskInstance taskInstance)
{
//breakpoint
Console.WriteLine("Hello World");
}
}
}
@ mm8 да, я видел этот пост, он на самом деле мало что объяснял, и ему уже больше 2 лет, так что, возможно, что-то изменилось. Мне кажется странным, что вы все еще можете указать службу приложения в манифесте приложения, если она не поддерживается.





В настоящее время нет возможности использовать mechanism. в приложении WinUI3. Я бы посоветовал вам использовать именованный канал или другой механизм IPC.
Я обнаружил обходной путь.
Я могу использовать проект упаковки приложений Windows (.wapproj), чтобы объединить приложение UWP с приложением WinUI3.
Шаги:
Использование AppService, вероятно, не подходит или событие не поддерживается для настольного приложения WinUI. Вам придется найти другой способ общения между процессами: github.com/microsoft/microsoft-ui-xaml/issues/3838