Я выполняю следующий пример: здесь использовать WinRT API в приложении Win32.
Я добавил ссылки на System.Runtime
и System.Runtime.InteropServices.WindowsRunTime
но когда я добавлю ссылку на Windows.winmd
Я получаю следующую ошибку:
Ошибка 1 Ошибка создания манифеста. Не удалось загрузить файл или сборку "C:\Program Files (x86)\Windows Kits\8.1\References\CommonConfiguration\Neutral\Windows.winmd" или одна из его зависимостей. Попытайтесь загрузить программу с неправильным форматом.
Я пробовал различные конфигурации с использованием различных.NET-фреймворков и версий Visual Studio. Что я могу попробовать?
Кажется, что установка
<GenerateManifests>true</GenerateManifests>
в файле проекта (например.csproj) несовместимо с ссылками winmd.
Этот параметр добавляется при включении параметров безопасности ClickOnce (флажок "Свойства проекта => Безопасность => Включение параметров безопасности ClickOnce").
До сих пор я не мог найти способ исправить конкретную проблему, но я нашел обходное решение, которое работает для моего случая: я только что создал отдельный проект библиотеки классов в своем решении, к которому ссылается основной проект. В файле проекта библиотеки классов я добавил строку
<TargetPlatformVersion>8.0</TargetPlatformVersion>
как описано в ссылочной статье.
Библиотечный проект компилируется, а также основной проект может без проблем использовать DLL.
Я решил очень похожую проблему, следуя этому решению qaru.site/questions/713256/... которое в основном делает публикацию, исключающую winmd.