Я пытаюсь использовать AppService в winrt / c ++, следуя примеру github в C ++ / Cx.Я всегда получаю результат "AppUnavailable".Я подтвердил, что подключаюсь к правильному имени службы и имею правильное имя семейного пакета.
Мой appxmanifest:
<Extensions>
<uap:Extension Category="windows.appService" EntryPoint="BlankApp5.Inventory">
<uap3:AppService Name="com.microsoft.inventory" uap4:SupportsMultipleInstances="true"/>
</uap:Extension>
</Extensions>
Файл заголовка моего провайдера (в Mainpage.h):
namespace winrt::BlankApp5::implementation
{
class Inventory : public InventoryT<Inventory> {
public:
virtual void Run(IBackgroundTaskInstance taskInstance);
private:
BackgroundTaskDeferral mDef;
AppServiceConnection appServiceConnection;
};
Мой файл MainPage.idl:
[default_interface]
runtimeclass Inventory : Windows.ApplicationModel.Background.IBackgroundTask
{
void Run(Windows.ApplicationModel.Background.IBackgroundTaskInstance taskInstance);
}
Во время генерации IDL я получаю следующее предупреждение:
[msg]A member name has been qualified with an interface name because name collisions occurred across interface members on a runtime class. [context]"Run" has been renamed as "BlankApp5.IInventory.Run" on runtime class "BlankApp5.Inventory"
Я немного обеспокоен тем, что Inventory :: Run удаляется компоновщиком, так как он не используется внутри сервис-провайдера, но японятия не имею, почему это не работает.Поставщик и клиент находятся в двух разных решениях и не имеют ссылок друг на друга, но я предполагаю, что это не нужно.Prodiver службы был развернут, но не запущен.Запуск не имеет значения.