Загрузка графических ресурсов в библиотеки и формы классов WinForms Core - PullRequest
0 голосов
/ 17 октября 2019

Я перекомпилирую визуальный элемент управления WinForms .NET Framework для использования его в приложениях WinForms Core в .NET Core 3.0 и столкнулся с одной проблемой при создании графических ресурсов, таких как курсоры. У меня есть графические файлы во вложенной папке «Ресурсы», и они скомпилированы как встроенные ресурсы внутри библиотеки управления. Следующий код, который инициализирует статические поля элемента управления, работает нормально в исходном элементе управления WinForms в .NET Framework:

static Cursor fCursorResize = new Cursor(typeof(MyControl), "Resources.resize.cur");

Этот код перестал работать после того, как я перенес проект в проект библиотеки классов .NET Core WinForms. Я проверил это в проекте .NET Core WinForms exe, и он работает нормально, но я не могу понять, почему он не работает в библиотеке классов .NET Core.

Я знаю, что эта задача может быть реализованас другим фрагментом кода, подобным следующему:

var assembly = typeof(MyControl).GetTypeInfo().Assembly;
System.IO.Stream resource = assembly.GetManifestResourceStream("MyControl.Resources.resize.cur");
fCursorResize = new Cursor(resource);

Однако, если я пойду таким образом, для этого потребуется переписать некоторые части исходного элемента управления. Я не хотел бы делать это по нескольким причинам. Во-первых, в нескольких файлах кода разбросано около двух десятков графических ресурсов. Во-вторых, статические инициализаторы имеют меньше кода. И в-третьих, это приведет к различным файлам исходного кода для .NET Framework и .NET Core, но я бы хотел использовать одну и ту же базу кода.

Кто-нибудь может объяснить, почему первое показанное мной утверждение больше не работаетв проектах библиотеки классов .NET Core? Есть ли способ изменить его, чтобы он работал в обоих мирах? Я пытался добавить разные части, такие как пространство имен, ко второму resource параметру используемого мной конструктора Cursor, но все это не помогло.

...