4

Сценарий
В моем проекте есть фаза пост-сборки, настроенная для запуска командного файла, который читает текстовый файл «version.txt». Пакетный файл использует информацию в файле version.txt для вставки DLL в блок версии с использованием this tool.Как заставить сборку устареть, когда текстовый файл будет изменен?

Версия.txt включена в мой проект, чтобы упростить его модификацию. Это выглядит как это:

@set #Description="TankFace Utility Library" 
@set #FileVersion="0.1.2.0" 
@set #Comments="" 

В основном пакетный файл переименовывает этот файл в version.bat, называет его, а затем переименовывает его обратно VERSION.TXT впоследствии.

Проблема
Когда я изменить version.txt (например, чтобы увеличить версию файла), а затем нажмите клавишу F7, сборка не рассматриваются как устаревшие, так что шаг после сборки не , поэтому версия DLL не обновляется.

Я действительно хочу включить .txt-файл в качестве входа в сборку, но ничего не пытается его использовать.

Если я #include .txt файл из файла CPP в проекте, компилятор не работает, потому что он явно не понимает, что означает «@set».

Если я добавляю/* ... */комментарии вокруг команд @set, тогда командный файл имеет некоторые синтаксические ошибки, но в итоге ему удастся. Но это плохое решение, я думаю.

Итак ... как бы вы это сделали?

ответ

0

Это может быть слишком «Hacky», но это может работать:

  1. Написать быстрый Perl (и т.д.) скрипт для проверки version.txt был обновлен.
  2. Если файл был изменен, попросите этот скрипт обновить исходный файл фиктивного файла, скомпилированный с вашим проектом.
  3. Запустите сценарий как событие предварительной сборки.

Таким образом, если скрипт видит, что файл был изменен, он изменит другой, что приведет к повторной сборке.

Хакки, но попробуйте, если вы очистите дно ствола.

+0

Да, конечно, взломанный. Мне не нужно разбираться, был ли файл изменен, мне пришлось бы хранить последнее использованное файловое время или что-то в этом роде ... но хорошая работа для мышления вне рамки :) – demoncodemonkey

1

Это работает в VS2005. Если вы не используете это, некоторые настройки могут быть в разных местах или с разными именами.

Добавьте текстовый файл в свой проект, щелкните его правой кнопкой мыши в обозревателе решений и выберите «Свойства». В разделе «Свойства конфигурации»> «Основные» убедитесь, что файл не исключен из сборки. В разделе «Пользовательский шаг сборки»> «Общие» поместите свою существующую команду пост-сборки в качестве параметра «Командная строка». Убедитесь, что вы указали файл .txt в качестве выходного файла. Теперь F7 должен заметить изменения в текстовом файле и запустить командный файл.

+0

Это заставило командный файл запускаться каждый раз, когда я нажимаю F7, независимо от того, был ли изменен файл version.txt. Это замедляет мою сборку, что я замечаю.Знаете ли вы, как я могу выполнить только шаг пользовательской сборки при изменении версии .txt? – demoncodemonkey

+0

Хмм, это же для меня. Извини за это. Я смог исправить это, указав файл .txt в качестве выходного файла. Попробуй это? –

+0

OK Я добавил файл .txt к выводам пользовательского шага сборки. Но теперь, когда я нажимаю F7, он запускает шаг сборки, а затем изменяет временную метку файла .txt, заставляя его каждый раз запускать шаг сборки. Я уверен, что мне не хватает чего-то очевидного здесь ... это не может быть так сложно! – demoncodemonkey

 Смежные вопросы

  • Нет связанных вопросов^_^