Ненавидите 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 файле
все пути должны быть относительными и все будет отлично.
Удачи в работе!