Загрузить значок приложения через ресурс
Вот что я сделал:
Я создал resource.resx
файл с помощью моей IDE (SharpDevelop) и добавил logo.ico
к этому. Файл resource.resx выглядит примерно так:
<data name="logo" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAA... (etc etc)
Тогда я использовал ResGen.exe
скомпилировать это resource.resx
в действительный resource.resources
файл.
resgen.exe resource.resx resource.resources
Используя командную строку JScript.NET компилятор, я скомпилировал все и включил мой resource.resources
у которого есть мой файл логотипа.
jsc /res:resource.resources /out:app.exe /reference:UI.dll,Remote.dll app.cs
Теперь я хочу получить доступ к этому файлу логотипа из моего кода, поэтому у меня есть это:
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.Drawing.Icon icon = new System.Drawing.Icon(assembly.GetManifestResourceStream("resource.resources.logo"));
Однако я получаю исключение для времени выполнения GetManifestResourceStream
который является нулевым.
Я предполагаю, что это проблема пространства имен, поэтому я попытался получить доступ к файлу ресурса только с GetManifestResourceStream("resource.resources")
но я получаю это другое исключение:
Argument 'picture' must be a picture that can be used as a Icon.
Любые идеи будут с благодарностью, спасибо!
1 ответ
Он жалуется на формат файла, он не распознает его как значок. Я не могу сказать из вашего фрагмента, недостаточно видимого значения в кодировке base64.
Я должен сказать, что если эта IDE заставляет вас писать такой код, то это вам не поможет. Хранение значков в ресурсах в Visual Studio совершенно тривиально, нет необходимости писать код вообще. Экспресс-издание имеет ту же цену.