Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Главная » Статьи по программированию » .NET - Framework »

Обсудить на форуме Обсудить на форуме

Использование resx ресурсов в Visual Studio .NET
code.zip (54,37 Kb)

Ненавидите resx файлы? Надоело в каждый новый проект включать класс ResourceHelper, не забывая при этом подправить namespace для ресурсов? Воспользуйтесь генератором для Visual Studio!
Ненавидите resx файлы? Надоело в каждый новый проект включать класс ResourceHelper, не забывая при этом подправить namespace для ресурсов? Воспользуйтесь генератором для Visual Studio!

 

Вас бесит, когда студия в resx файл вместо ссылки включает саму иконку? Ничего не поделаешь, придется поработать руками… Делается это при помощи класса ResXFileRef.

 

К сожалению, класс ResXResourceReader игнорирует имя resx файла и работает с его содержимым как с безликим потоком. Кроме того, механизм TypeConverter, с помощью которого он поднимает обработчик для конкретного типа ресурса, не позволяет получить никакой дополнительной информации кроме той, что есть непосредственно в resx файле.

 

Все это я говорю к тому, чтобы стало понятно, почему класс ResXFileRef работает только с абсолютными путями… Хотя, если быть точным, функция CreateFile может работать с относительными путями отсчитывая их от текущей директории для процесса. Проблема в том, что предсказать какая директория окажется текущей в каждом конкретном случае запуска Visual Studio невозможно…

 

Таким образом, у нас есть несколько путей решения проблемы: 1.

Использовать абсолютные пути - не подходит, т.к. код у всех разработчиков лежит в разных местах 2.

Использовать переменные окружения, для указания корня проекта - не работает в случае нескольких версий продукта 3.

Каким-то образом выставлять в процессе компиляции (Pre-Build Step) текущую директорию для процесса devenv.exe

 

Именно по третьему пути мы и пошли, в результате чего на свет появилась маленькая утилита SetCurDir:

 

Process Current Directory Fixer (c) 2004 Digital Design

Usage: SetCurDir.exe
    <new_current_dir>        --- new current directory
    [/pid <process_id>]      --- process identifier
    [/pname <process_name>]  --- process name
    [/?:help]                --- show (this) usage information
	

Использовать ее очень просто, достаточно в свойства проекта в качестве Pre-build step указать команду:

SetCurDir /pname devenv.exe $(ProjectDir)

Ее использование приведет к тому, что текущая директория для процесса(-ов) devenv.exe будет указывать на корень проекта. В resx файле все пути должны быть относительными и все будет отлично.

 

Удачи в работе!


Может пригодится:


Автор: Вадим Скипин
Прочитано: 5313
Рейтинг:
Оценить: 1 2 3 4 5

Комментарии: (0)

Добавить комментарий
Ваше имя*:
Ваш email:
URL Вашего сайта:
Ваш комментарий*:
Код безопастности*:

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру