Автоматическая компиляция с изменением ресурса - PullRequest
0 голосов
/ 29 июня 2010

Я использую Visual Studio 2008. Можно ли выполнить автоматическую сборку решения, с помощью которого вы можете изменить файл ресурсов / другие файлы для проекта, чтобы принимать значения?

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

Я хотел бы знать, возможно ли обрезать все эти шаги и просто изменить дату и сборку, не открывая проект вообще.

Спасибо!

1 Ответ

1 голос
/ 29 июня 2010

Вы можете запустить сборку из командной строки без запуска Visual Studio.
Это вместе со сценарием сборки является обычным способом выполнения временных / устаревших сборок

Примеры:

devenv  /clean release /project ProjectName SolutionName.sln     
devenv  /build release /project ProjectName SolutionName.sln

изменения в файле .rc не всегда воспринимались / build в VS2005 / 8, поэтому безопаснее делать чистую сборку.

Затем у меня есть скрипт на python, который обновляет файл version.h, содержащий

#define VERSION_MAJOR 1
#define VERSION_MINOR 12
#define VERSION_BUILD 368
#define VERSION_DATE "2010:06:19"

Затем он включается в файл application.rc2. Извините, не могу вспомнить причину запутанных шагов макроса строки. Я нашел это где-то в сети несколько лет назад, сейчас могут быть более простые способы - но это работало с VC ++ 6 до VS2010!

    #include "version.h"

    #define _STR(x) #x
    #define STR(x) _STR(x)

    #define VERSION_STRING STR(VERSION_MAJOR) "." STR(VERSION_MINOR) ".0." STR(VERSION_BUILD) 

    VS_VERSION_INFO VERSIONINFO
     FILEVERSION VERSION_MAJOR,VERSION_MINOR,0,VERSION_BUILD
     PRODUCTVERSION VERSION_MAJOR,VERSION_MINOR,0,VERSION_BUILD
     FILEFLAGSMASK 0x17L
    #ifdef _DEBUG
     FILEFLAGS 0x1L
    #else
     FILEFLAGS 0x0L
    #endif
     FILEOS 0x4L
     FILETYPE 0x1L
     FILESUBTYPE 0x0L
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "080904b0"
            BEGIN
                VALUE "FileDescription", "XXX Application"
                VALUE "FileVersion", VERSION_STRING "\0"
                VALUE "InternalName", "XXX"
                VALUE "LegalCopyright", "Copyright (C) 2010"
                VALUE "LegalTrademarks", "XXX"
                VALUE "ProductName", "XXX Application"
                VALUE "ProductVersion", VERSION_STRING "\0"
            END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x809, 1200
        END
    END

Что, наконец, включено в приложение. Rc

#include "res\application.rc2"  // non-Microsoft Visual C++ edited resources

Все это оказалось необходимым, поскольку Visual Studio перезаписывал внешние изменения в файле .rc при его открытии в редакторе диалогов - не знаю, было ли это исправлено в более новых версиях, и это только проблема для MFC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...