Атрибуты уровня сборки и модуля
42C# --- Сборки .NET --- Атрибуты уровня сборки и модуля
Атрибуты можно также применять ко всем типам внутри конкретного модуля (если речь идет о многофайловой сборке) или ко всем модулям внутри отдельной сборки, используя, соответственно, дескрипторы [module: ] и [assembly: ]. Например, предположим, что необходимо позаботиться о соответствии требованиям CLS всех общедоступных членов во всех общедоступных типах, определенных внутри сборки.
Отвечающая требованиям CLS сборка может использоваться во всех языках программирования .NET. Если в общедоступных типах создаются общедоступные члены, не соответствующие требованиям, которые указаны в CLS для конструкций программирования (например, они принимают параметры без знака или указатели), их использование в других языках .NET может оказаться невозможным. По этой причине при создании библиотек кода на C#, которые должны быть пригодны для применения во множестве языков .NET, проверка на предмет соответствия требования CLS является обязательным условием.
Для этого необходимо добавить в самом начале файла исходного кода на C# показанный ниже атрибут уровня сборки. Имейте в виду, что все атрибуты уровня сборки или модуля должны быть перечислены за пределами области действия любого из пространств имен! При добавлении в проект атрибутов уровня сборки (или модуля) рекомендуется следовать такой схеме в файле кода:
// Сначала должны перечисляться операторы using.
using System;
// Далее необходимо перечислить атрибуты уровня сборки или модуля.
// Следует позаботиться, чтобы все общедоступные типы в данной сборке обязательно отвечали требованиям CLS.
[assembly: CLSCompliant(true) ]
// Теперь можно перечислять собственные пространства имен и типы.
namespace AttributedCarLibrary
{
// Типы...
}
Если теперь добавить сюда фрагмент кода, который не отвечает требованиям CLS (например, явный элемент данных без знака):
// Типы ulong не отвечают требованиям CLS.
public class MyClass
{
public ulong notCompliant;
}
компилятор выдаст соответствующее предупреждение.
Файл AssemblyInfo.cs
По умолчанию в Visual Studio 2010 во все проекты автоматически добавляется файл по имени AssemblyInfo.cs, который можно просмотреть, раскрыв в окне Solution Explorer узел Properties (Свойства). Этот файл представляет собой очень удобное место для размещения атрибутов, которые должны применяться на уровне сборки.
Ниже представлены некоторые атрибуты уровня сборки:
- [AssemblyCompany]
Хранит общую информацию о компании
- [AssemblyCopyright]
Хранит любую информацию, которая касается авторских прав на данный продукт или сборку
- [AssemblyCulture]
Предоставляет информацию о том, какие культуры или языки поддерживает сборка
- [AssemblyDescription]
Хранит удобное для восприятия описание продукта или модулей, из которых состоит сборка
- [AssemblyKeyFile]
Указывает имя файла, в котором содержится пара ключей, используемых для подписания сборки (т.е. создания строгого имени)
- [AssemblyProduct]
Название продукта для манифеста сборки
- [AssemblyTrademark]
Предоставляет информацию о торговой марке
- [AssemblyVersion]
Указывает информацию о версии сборки в формате <старший_номер.младший_номер.номер_сборки.номер_редакции>