У меня есть существующее решение для приложения 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, поэтому есть ли конкретная вещь, которую я должен искать, возможно, в Журнал сборки, чтобы узнать, почему этот файл не был скопирован в это место?