#visual-studio-2010 #class #build #c -cli #accessor
#visual-studio-2010 #класс #сборка #c -cli #средство доступа
Вопрос:
У меня есть файл resources.resx в моем проекте C / CLI, и я хочу создать сборку для автоматического создания класса доступа, чтобы помочь получить доступ к ресурсам, когда это необходимо. Я много искал, но пока не нашел достойного решения (используя vs2010).
Я могу создать класс доступа с помощью этого:
resgen /str: c resources.resx
Это создает файл resources.h (который я хочу) и файл resources.resources (который я могу удалить). Но я хотел бы, чтобы команда выполнялась всякий раз, когда я изменяю файл resources.resx, и это вызывает у меня некоторую головную боль, поскольку в файле уже есть цель сборки, «Компилятор управляемых ресурсов», и хотя он запускает resgen для этого файла, он включает в себя 7 других файлов ресурсов и не имеет /переключатель str.
Пока единственным автоматическим решением является создание команды события предварительной сборки, но это означает перекомпиляцию всего проекта каждый раз, когда я делаю сборку.
Есть предложения?
Ответ №1:
Я решил проблему следующим образом. В событие предварительной сборки проекта я вставил это:
resgen /str:c ,myApp,resources,resources.h.new resources.resx myApp.resources.resources
del myApp.resources.resources
fc /b resources.h resources.h.new > NUL:
if NOT "%ERRORLEVEL%"=="0" ( type resources.h.new > resources.h )
del resources.h.new
По сути, я создаю новые ресурсы.h и сравните его с существующим файлом. Если есть какие-либо различия, я использую type для копирования файла, чтобы обновить временную метку. Это заставляет механизм сборки обновлять только ресурсы.h, когда это необходимо. Не очень, но он выполняет свою работу.