Недавно я работал над миграцией проекта с .NET Framework на .NET Core. Следуя определенным инструкциям и инструментам [1], все прошло довольно гладко. Однако была одна проблема, которая не казалась очевидной, но не работала: некоторые ресурсы не распознавались и не создавались или не отображались. Одна из вещей, которые я пробовал, заключалась в том, чтобы изменить все пути к ресурсам на абсолютные пути в проекте, чтобы посмотреть, что произошло, ну, это сработало! Это заставило меня подумать, что что-то в процессе или в самой цепочке инструментов платформы были проблемы. Путем дополнительных поисков и копаний, наконец, было определено, что процесс сборки .NET Core был нарушен, когда у вас были ресурсы, о которых не позаботились.

Чтобы продемонстрировать эту проблему, я установил MSVS (Microsoft Visual Studio) Community 2019 версии 16.6.1 (для поддержки .NET Core 3.0 и 3.1) [2] и MSVS Community 2019 Preview Version 16.7.0 Preview 2.0 (для поддержки .NET 5.0 ) [3], чтобы подтвердить эту проблему. У них обоих была одна и та же проблема. Я надеюсь, что Microsoft сможет исправить это в ближайшее время.

Вот шаги:

  1. Откройте MSVS и выберите «Создать новый проект».
  2. Вам нужно будет выполнить поиск по запросу «Приложение WPF (.NET Core) C #» для шаблона вашего проекта:

3. Нажмите «Далее», вам будет предложено указать папку и название проекта:

4. Вы можете изменить их по своему усмотрению и нажать «Создать».

5. Панель вашего решения должна выглядеть следующим образом:

6. Щелкните правой кнопкой мыши проект «process-images» (не Решение, а то, что находится под ним!) И «Добавить» - ›« Новая папка », присвойте папке имя« Images »

7. Затем щелкните правой кнопкой мыши только что созданную папку «Изображения» и выберите «Добавить» - ›« Существующие элементы… ».

8. Я добавил 3 значка из своих файловых систем, вы можете добавить любые файлы изображений, которые вам нравятся, но они должны выглядеть следующим образом:

9. Дважды щелкните файл «MainWindow.xaml», и вы должны увидеть белый пустой холст, всплывающий в центре студии. Внизу вы должны увидеть содержимое файла:

10. В «Панели инструментов» на левой панели выберите «Изображение» и перетащите его на пустой холст «MainWindow.xaml», повторите еще два раза (всего 3 раза). Ваш файл «MainWindow.xaml» теперь должен выглядеть так:

11. Теперь мы можем связать наши значки с тремя только что добавленными элементами изображения, введя следующую информацию об источнике для элементов изображения:

<Image Source="/Images/icon_1.png HorizontalAllignment="Left"... />
<Image Source="/Images/icon_2.png HorizontalAllignment="Left"... />
<Image Source="/Images/icon_3.png HorizontalAllignment="Left"... />

12. Вы должны сразу увидеть 3 иконки на холсте:

13. Теперь в меню «Сборка» вы можете успешно выполнить «Построить решение» или «Восстановить решение» без каких-либо ошибок или предупреждений.

14. Но когда вы запускаете его либо «Начать отладку», либо «Начать без отладки» в меню «Отладка», приложение выскакивает, ничего не показывая на белом фоне!

Куда делись мои красивые иконки?

Проблема в том, что ресурсы изображения не распознаются в процессе сборки, поэтому информация отсутствует, и наша программа не знает, как их втянуть. Эта ошибка особенно раздражает, потому что процесс сборки не дает вам никаких указаний на то, что что-то ужасно неправильно, и ваш конечный продукт не тот, который вы разработали!

Чтобы исправить эту ошибку, вам просто нужно указать информацию о ресурсе в файле проекта «process-images.csproj», исходный файл выглядит следующим образом:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp5.0</TargetFramework>
    <RootNamespace>process_images</RootNamespace>
    <UseWPF>true</UseWPF>
  </PropertyGroup>
</Project>

Добавив информацию о ресурсе, он должен выглядеть так и решить вашу проблему:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp5.0</TargetFramework>
    <RootNamespace>process_images</RootNamespace>
    <UseWPF>true</UseWPF>
  </PropertyGroup>
  <ItemGroup>
    <Resource Include="Images/*.png" />
  </ItemGroup>
</Project>

Я надеюсь, что это поможет, если у вас все еще есть подобная проблема.

КОНЧИК:

  1. Когда вы создаете изображения на холсте, не слишком беспокойтесь о том, чтобы выровнять их вручную, вам просто нужно сначала перетащить их на холст и подключить ресурсы изображения. После этого вы точно рассчитываете, где они должны быть, и вводите позиции (высота, поля и ширина).
  2. После изменения файла проекта вам необходимо сохранить его и перестроить проект перед отладкой.

Использованная литература:

[1] https://docs.microsoft.com/en-us/dotnet/standard/analyzers/portability-analyzer
[2] https://visualstudio.microsoft.com/vs/ < br /> [3] https://visualstudio.microsoft.com/vs/preview/
[4] https://stackoverflow.com/questions/1192054/load-image-from-resources- площадь-проект-в-к-диез