Загрузить значок приложения через ресурс

Вот что я сделал:

Я создал 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 совершенно тривиально, нет необходимости писать код вообще. Экспресс-издание имеет ту же цену.

Другие вопросы по тегам