Загрузить значок приложения через ресурс - PullRequest
0 голосов
/ 14 октября 2010

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

Я создал файл 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 compiler, я скомпилировал все и включил в свой 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 Ответ

0 голосов
/ 14 октября 2010

Жалуется на формат файла, не распознает его как значок.Я не могу сказать из вашего фрагмента, недостаточно видимого закодированного в base64 значения.

Я должен сказать, что если из этой IDE вы пишете такой код, то это , а не помогаю тебе.Хранение значков в ресурсах в Visual Studio совершенно тривиально, нет необходимости писать код вообще.Экспресс-издание имеет ту же цену.

...