VS 2019 - Windows Application Packaging Project: не удалось скопировать файл "... \ WinMetadata \ Windows .winmd", потому что он не был найден - PullRequest
0 голосов
/ 08 мая 2020

У меня есть существующее решение для приложения UWP Windows Store, и недавно мне потребовалось добавить к нему возможности настольного приложения Win32. Я просмотрел документацию Microsoft по добавлению исполняемого файла с полным доверием и последовал примеру здесь: https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-1/ После добавления Windows Application Packaging Project и добавления моего проекта приложения UWP в качестве точки входа я получаю эту ошибку при сборке:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(4643,5): error MSB3030: Could not copy the file "C:\path\to\UWP\project\bin\x86\Debug\WinMetadata\Windows.winmd" because it was not found.

Я заметил, что WinMetadata\Windows.winmd обычно включается в папку AppX при упаковке приложения UWP, но обычно не отображается в базовой папке bin\x86\Debug. Если я удалю почти весь код C#, упомянутый в моем проекте, я смогу создать и запустить приложение. Почему проект Windows Application Packaging будет искать этот файл в <UWP_Project>\bin\x86\Debug?

ОБНОВЛЕНИЕ: если я создам новый пустой проект UWP и вместо этого добавлю его в качестве ссылки на проект WAP, я могу подтвердить, что сборка выполняется нормально. Но если я затем добавлю другие свои зависимости, nugets и ссылки на проекты, содержащие код моего приложения UWP, я получу описанное мной поведение.

Большая часть кода C# приложения содержится в общих проектах (для переносимости ). Эти общие проекты содержат только код C#. Если я сделаю вышеуказанные шаги, воспроизведу ошибку (отсутствует WinMetadata\Windows.winmd), а затем удаляю эти общие ссылки проекта, содержащие код (оставляя все Nugets и другие зависимости), он строится снова! Очевидно, мне нужен код как часть приложения ..

Я предполагаю, что этот файл (WinMetadata\Windows.winmd) добавлен по умолчанию для приложений UWP, поэтому есть ли конкретная вещь, которую я должен искать, возможно, в Журнал сборки, чтобы узнать, почему этот файл не был скопирован в это место?

...