В типичном приложении .NET информация о продукте и версии хранится в файле AssemblyInfo.cs
в папке «Свойства», например ...
DLL Project
- Properties Folder
- AssemblyInfo.cs
В нашем случае у нас есть решение, в котором нам нужно синхронизировать информацию о версии между одиннадцатью DLL.
Для этого мы сначала удалили все общие значения из файла AssemblyInfo.cs
каждого проекта, оставив только те значения, которые относятся к этому конкретному проекту.
Затем мы поместили все общие значения во второй файл с именем AssemblyInfo_Shared.cs
, который мы сохраним в одной папке с файлами проектов. Затем мы добавляем этот файл в папку «Свойства» каждого проекта по ссылке (это маленькая стрелка «вниз» на кнопке при добавлении.)
При этом все связанные библиотеки DLL совместно используют одну и ту же информацию о версии, сохраняя при этом также свойства, относящиеся к сборке. Это позволяет поддерживать синхронизацию набора версионных DLL-файлов, поскольку мы редактируем один файл, и все одиннадцать версий DLL обновляются одновременно.
Вот как это выглядит ...
Common Folder
- AssemblyInfo_Shared.cs (Actual)
DLL Project A
- Properties Folder
- AssemblyInfo.cs // Only values specific to A
- AssemblyInfo_Shared.cs (Link)
DLL Project B
- Properties Folder
- AssemblyInfo.cs // Only values specific to B
- AssemblyInfo_Shared.cs (Link)
Содержимое AssemblyInfo.cs в Project A выглядит следующим образом ...
using System.Reflection;
[assembly: AssemblyTitle("SomeApp.LibA")]
[assembly: AssemblyDescription("This is the code for A")]
Это проект B's
using System.Reflection;
[assembly: AssemblyTitle("SomeApp.LibB")]
[assembly: AssemblyDescription("This is the code for Project B")]
А вот и общий ...
using System;
using System.Reflection;
using System.Resources;
using System.Runtime.InteropServices;
[assembly: AssemblyProduct("SomeApp")]
[assembly: AssemblyVersion("1.4.3.0")]
[assembly: AssemblyFileVersion("1.4.3.0")]
[assembly: AssemblyCompany("MyCo")]
[assembly: AssemblyCopyright("Copyright (c) 2010-2018, MyCo")]
[assembly: ComVisible(false)]
[assembly: NeutralResourcesLanguage("en-US")]
[assembly: CLSCompliant(true)]
С учетом вышеизложенного обе библиотеки DLL совместно используют одну и ту же информацию о версии, поскольку при сборке общий файл «объединяется» с файлом конкретного проекта. Надеюсь, это имеет смысл.
Однако в проектах .NET Standard информация о версии запекается прямо в файле Project в разделе <PropertyGroup>
, поэтому я не уверен, как мы можем достичь такой же возможности.
Есть ли в .NET Standard что-либо, поддерживающее это?