Shared AssemblyInfo для единообразного управления версиями в решении


Я читал об этой технике: http://blogs.msdn.com/b/jjameson/archive/2009/04/03/shared-assembly-info-in-visual-studio-projects.aspx

в основном это означает, чтобы создать SharedAssemblyInfo.cs с информацией о версии сборки и добавлением этого файла в качестве ссылки на все проекты решения, поэтому фактический файл находится только в 1 месте на диске.

мой вопрос касается 2-х сценариев:

  1. существующий решение, которое не использует этот механизм: есть ли способ легко добавить ShareAssemblyInfo ко всем проектам? (допустим, у меня есть решение с 50 проектов).

  2. при создании нового проекта по умолчанию новый отличается.cs создается. Однако я бы хотел, чтобы автоматически ссылку на SharedAssemblyInfo, а также.

есть ли решение для этого? какова обычная практика?

3 63

3 ответа:

первый пункт может быть решена с помощью простого текстового редактора, который может обрабатывать несколько файлов сразу и найти/заменить. Просто откройте все ваши csproj в нем и замените строку <Compile Include="Properties\AssemblyInfo.cs" /> С

<Compile Include="..\SharedAssemblyInfo.cs">
  <Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile>

в качестве альтернативы вы можете написать такую утилиту:

var files = Directory.GetFiles(yourSolutionDir, "*.csproj", SearchOption.AllDirectories);
foreach (var f in files) {
  string contents = File.ReadAllText(f);
  string result = contents.Replace("<Compile Include=\"Properties\AssemblyInfo.cs\" />", putSecondStringHere_ItIsJustTooLong); // :)
  File.WriteAllText(f, contents);
}

что касается второго вопроса... Вы могли бы взглянуть на шаблоны пользовательских проектов Visual Studio , но я не уверен, что это стоит усилий. Вы должны ИМО написать тест, который будет проверять это вместо. Это будет намного проще, а результат практически тот же.

UPD: о написании тестов для проверки файлов решений / проектов по некоторым пользовательским правилам. В принципе, формат sln/csproj достаточно прост, чтобы быть разбираемым без особых усилий. Так что если вы хотите иметь SharedAssemblyInfo.cs связанный с каждым проектом-просто проанализируйте csproj и проверьте это. Затем поместите эту проверку на сервер сборки и запустите ее на каждой сборке. У нас есть такая система работает в настоящее время, и это стоит что-то около двух дней, чтобы написать, но спас нас гораздо больше (у нас есть более сложные правила и проект с несколькими решениями, так что это стоило усилий).

Я не буду писать об этой проверке подробно здесь прямо сейчас (это не так коротко), но я собираюсь написать об этом в блоге в ближайшее время - скорее всего, до конца этой недели. Так что, если вам интересно-просто проверьте мой блог скоро :)

UPD:здесь это.

можно связать с общим файлом информации о сборке в VS 2010. Ашиш Джайн имеет хороший пост в блоге об этом:совместное использование версии сборки между проектами в решении.

после создания общего информационного файла сборки на уровне решения, его инструкции для связывания с ним из проекта являются:

  1. щелкните правой кнопкой мыши на проекте, в который вы хотите добавить общий файл сборки, и выберите Добавить -> существующий элемент...

  2. Выберите файл " SharedAssemblyInfo.cs " из папки решения.

  3. вместо добавления, нажмите на стрелку рядом с Добавить и нажмите кнопку " Добавить как Ссылка"

  4. перетащите вниз добавленный связанный файл вместе с AssemblyInfo.CS в та же папка.

  5. повторите шаги 1-4 для всех проектов, для которых вы хотите добавить shared файл сборки.

Я пробовал это, и это работает.

Я создал приложение для автоматического увеличения версии файла.

  1. скачать применение
  2. добавьте следующую строку в командную строку события предварительной сборки

C:\temp\IncrementFileVersion.exe $(SolutionDir)\Properties\AssemblyInfo.цезий Построение проекта Чтобы сохранить его простым приложение только бросает сообщения, если есть ошибка, чтобы подтвердить, что он работал нормально вам нужно будет проверить версию файла в ' Assembly Информация'

Примечание: вам придется перезагрузить решение в Visual studio для кнопки "сведения о сборке", чтобы заполнить поля, однако ваш выходной файл будет иметь обновленную версию.

для предложений и запросов, пожалуйста, напишите Мне по адресу telson_alva@yahoo.com