Я пытаюсь разрешить приложению Desktop Bridge регистрироваться для уведомлений WNS из центра уведомлений Azure, но когда я фактически использую API-интерфейсы UWP, оно выдает
`System.IO.FileNotFoundException:« Не удалось загрузить файл или сборку »System.Runtime.WindowsRuntime, Версия = 4.0.10.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089 'или одна из его зависимостей. Система не может найти указанный файл. '
с внутренним исключением
FileNotFoundException: не удалось загрузить файл или сборку 'System.Runtime.WindowsRuntime, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089' или одна из ее зависимостей. Система не может найти указанный файл.
Я настроил свое решение, следуя инструкциям по упаковке Visual Studio . Мой пакетный проект имеет целевую версию Fall Creators Update, минимальную версию Anniversary Update, и я связал его с проектом Центра разработки Windows для поддержки WNS. Все мои проекты .NET Framework ориентированы на v4.6.2. Если я не вызываю API-интерфейсы UWP, упакованное приложение работает отлично.
Весь код WNS находится в одном проекте библиотеки классов, и на этот проект ссылается мое настольное приложение (которое добавляется в приложения пакета проекта). Библиотека классов содержит ссылки на все шесть файлов в Учебное пособие Microsoft , с Copy Local = False для трех файлов .winmd:
- три DLL из
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5
C:\Program Files (x86)\Windows Kits\10\UnionMetadata\Facade\Windows.winmd
C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0\Windows.Foundation.UniversalApiContract\5.0.0.0\Windows.Foundation.UniversalApiContract.winmd
C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0\Windows.Foundation.FoundationContract\3.0.0.0\Windows.Foundation.FoundationContract.winmd
Фактическая функция push-уведомления находится внутри асинхронного метода:
public namespace WnsClassLibrary
{
public class WnsChannelService
{
private PushNotificationChannel _channel;
public async Task CreateChannel()
{
_channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
}
}
}
Когда приложение для настольного компьютера запускается, оно пытается вызвать CreateChannel()
как нежелательный асинхронный метод, и именно тогда генерируется исключение - насколько я могу судить, оно даже фактически не делает его внутри метода.
Кто-нибудь знает, почему это происходит или как это исправить? Я попытался установить минимальную версию упаковочного проекта на Fall Creators Update, как предложено в приложении UWP: не удалось загрузить файл или сборку 'System.Runtime.WindowsRuntime, Version = 4.0.14.0 , но я все еще получаю то же исключение .