Атрибуты уровня сборки и модуля

42

Атрибуты можно также применять ко всем типам внутри конкретного модуля (если речь идет о многофайловой сборке) или ко всем модулям внутри отдельной сборки, используя, соответственно, дескрипторы [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;
}

компилятор выдаст соответствующее предупреждение.

Использование атрибута CLS Compliant

Файл AssemblyInfo.cs

По умолчанию в Visual Studio 2010 во все проекты автоматически добавляется файл по имени AssemblyInfo.cs, который можно просмотреть, раскрыв в окне Solution Explorer узел Properties (Свойства). Этот файл представляет собой очень удобное место для размещения атрибутов, которые должны применяться на уровне сборки.

Ниже представлены некоторые атрибуты уровня сборки:

[AssemblyCompany]

Хранит общую информацию о компании

[AssemblyCopyright]

Хранит любую информацию, которая касается авторских прав на данный продукт или сборку

[AssemblyCulture]

Предоставляет информацию о том, какие культуры или языки поддерживает сборка

[AssemblyDescription]

Хранит удобное для восприятия описание продукта или модулей, из которых состоит сборка

[AssemblyKeyFile]

Указывает имя файла, в котором содержится пара ключей, используемых для подписания сборки (т.е. создания строгого имени)

[AssemblyProduct]

Название продукта для манифеста сборки

[AssemblyTrademark]

Предоставляет информацию о торговой марке

[AssemblyVersion]

Указывает информацию о версии сборки в формате <старший_номер.младший_номер.номер_сборки.номер_редакции>

Лучший чат для C# программистов