2013-06-14 2 views
2

У меня есть проблема, как похожая на вопрос здесь: Create MSBuild custom task to modify C# code *before* compileИзменить C# код ПЕРЕД Compile в VS 2012

мне нужно изменить .cs файлы перед компиляцией. Конечно, я не хочу, чтобы они менялись на месте, из-за контроля версий. Я уже понял, что пользовательская задача MSBuild может быть правильным выбором для выполнения этой задачи.

Цитата ответа от выше вопрос:

Создать пользовательскую задачу, которая принимает список ц.п. файлов для адаптации перед компиляцией

  • Обычай задача адаптирует список файлов, полученных и создает их на диске
  • обычай задача устанавливает список измененных файлов на выходной параметр
  • выход задачи будет заменить оригинальный CS Показать список файлов
  • Компиляция выполняется с измененными файлами.

решение кажется ясным и хорошо, но то, что я не могу найти (все для Visual Studio 2012):

  • Что цель, задача должна получить? BeforeCompile или это слишком поздно?
  • Как именно я могу дать «файлы для компиляции» в качестве параметра в задаче? Как это определяется?
  • Каким образом результат определяется точно так, что компиляция использует измененные файлы?

Спасибо, было бы неплохо, если бы кто-нибудь может помочь мне пример :-)

+0

не будет проще работать с скриптом msbuild, который принимает файлы, изменяет их, создает vcproj из шаблона с новыми файлами, а затем создает его? – stijn

+0

Это может быть простой способ просто скопировать файлы где-то в качестве резервной копии и преобразовать все исходные файлы на этапе предварительной сборки консоли. Затем после обычной сборки, с последующим построением, восстанавливайте ранее сохраненные исходные файлы. Но это не очень элегантно;) – axel0r

ответ

1

Клиент мой попросил меня заменить какую-то версию и информацию об авторских правах в некоторых AssemblyInfo.cs файлы до компиляции , Я делаю это через задачу FileUpdate с RegEx на месте. Это, конечно, приводит к измененным файлам. Но это не проблема вообще, просто использовать Exec задачу и запустить «SVN Revert» в конце работы сборки:

<Target Name="RevertModifications"> 
    <Message Text="reverting modifications..." /> 
    <Exec Command="svn revert -R $(RootDir)"/> 
</Target> 

Возможно, что может помочь?

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