Shared AssemblyInfo для единообразного управления версиями в решении
Я читал об этой технике: http://blogs.msdn.com/b/jjameson/archive/2009/04/03/shared-assembly-info-in-visual-studio-projects.aspx
в основном это означает, чтобы создать SharedAssemblyInfo.cs с информацией о версии сборки и добавлением этого файла в качестве ссылки на все проекты решения, поэтому фактический файл находится только в 1 месте на диске.
мой вопрос касается 2-х сценариев:
существующий решение, которое не использует этот механизм: есть ли способ легко добавить ShareAssemblyInfo ко всем проектам? (допустим, у меня есть решение с 50 проектов).
при создании нового проекта по умолчанию новый отличается.cs создается. Однако я бы хотел, чтобы автоматически ссылку на SharedAssemblyInfo, а также.
есть ли решение для этого? какова обычная практика?
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. Ашиш Джайн имеет хороший пост в блоге об этом:совместное использование версии сборки между проектами в решении.
после создания общего информационного файла сборки на уровне решения, его инструкции для связывания с ним из проекта являются:
щелкните правой кнопкой мыши на проекте, в который вы хотите добавить общий файл сборки, и выберите Добавить -> существующий элемент...
Выберите файл " SharedAssemblyInfo.cs " из папки решения.
вместо добавления, нажмите на стрелку рядом с Добавить и нажмите кнопку " Добавить как Ссылка"
перетащите вниз добавленный связанный файл вместе с AssemblyInfo.CS в та же папка.
повторите шаги 1-4 для всех проектов, для которых вы хотите добавить shared файл сборки.
Я пробовал это, и это работает.
Я создал приложение для автоматического увеличения версии файла.
- скачать применение
- добавьте следующую строку в командную строку события предварительной сборки
C:\temp\IncrementFileVersion.exe $(SolutionDir)\Properties\AssemblyInfo.цезий Построение проекта Чтобы сохранить его простым приложение только бросает сообщения, если есть ошибка, чтобы подтвердить, что он работал нормально вам нужно будет проверить версию файла в ' Assembly Информация'
Примечание: вам придется перезагрузить решение в Visual studio для кнопки "сведения о сборке", чтобы заполнить поля, однако ваш выходной файл будет иметь обновленную версию.
для предложений и запросов, пожалуйста, напишите Мне по адресу telson_alva@yahoo.com