C # проекты, правильное управление версиями, компания и т. Д. При развертывании - PullRequest
12 голосов
/ 19 июля 2011

Моя компания работает над переводом нашей разработки с C ++. Net на C #.Наш продукт имеет стандартный ежемесячный выпуск (например, 5.0.19.2 ...).

В C ++. Net у нас был общий файл app.rc, который стандартизировал информацию о компании, а также номер версии.,Поскольку каждый проект в решении будет включать в себя один и тот же файл app.rc, было очень легко изменить информацию о версии более чем для 200 проектов.

Как это решение переводится в мир C #?Вопросы, которые я проверял перед написанием этого, упоминают об этом через окно свойств в обозревателе решений, но это не то, что я хочу.

Я знаю, что assemblyinfo.cs содержит информацию, которую я хочу изменить, но я не думаю Я мог бы иметь один мастер-файл.Нужно ли разбивать его на несколько файлов?

Заранее спасибо!

Ответы [ 5 ]

14 голосов
/ 19 июля 2011

Вы можете добавить файл в качестве ссылки вместо фактического файла. Например, мое решение может быть:

Solution
    - My Project
        - Properties
            - AssemblyInfo.cs
            - SharedAssemblyInfo.cs (Linked)
    - Solution Items
        - SharedAssemblyInfo.cs

Когда вы добавляете существующий элемент в решение, вы можете использовать стрелку раскрывающегося списка на ссылке Add и выбрать Add as Link. Файл SharedAssemblyInfo.cs может содержать общие / общие атрибуты сборки, например ::10000

[assembly: AssemblyVersion("2.0.*")]
[assembly: AssemblyFileVersion("2.0.0.0")]

[assembly: AssemblyCompany("My Company")]

... и т. Д. Локальный проект может содержать специфичные для проекта атрибуты:

[assembly: AssemblyTitle("My Assembly")]

... и т. Д.

6 голосов
/ 19 июля 2011

Вы можете иметь один файл информации о сборке и указать в нем только версию сборки:

using System;
using System.Reflection;

[assembly: AssemblyVersion("1.0.0.0")]

Затем вы просто добавляете файл в виде ссылки на каждый из ваших других проектов(хотя вам придется удалить атрибут AssemblyVersion из каждого из файлов Properties\AssemblyInfo.cs вручную).Когда они соберутся, они все будут использовать этот файл.

6 голосов
/ 19 июля 2011

Обычная практика в решениях c # - закомментировать информацию о версии в assemblyinfo.cs каждого проекта, а затем создать один общий «shared_assemblyinfo.cs» (названный по вкусу), который содержит информацию о версии и совместно используется всеми проектами. ..

4 голосов
/ 19 июля 2011

Возможен основной файл assembly.cs - просто удалите файл assembly.cs вашего проекта и повторно добавьте основной файл assembly.cs в каждый проект с помощью параметра «Как ссылка» в диалоговом окне «Добавить файл».*

http://www.tigraine.at/2009/01/22/sharing-a-common-assemblyinfo-between-projects-in-a-solution/

0 голосов
/ 19 июля 2011

Я бы предложил иметь информацию о версии для каждого проекта, учитывая, что их 400 или они могут быть настолько большими, что при каждой новой большой установке очень важно знать, какие версии сборок входят в эту настройку. Каждая сборка, разработанная разными людьми, похожа на отдельные проекты, и, наконец, они завершились в одну большую мозаику вашего основного приложения с MainVersion.

Привет.

...