サーチ…


備考

ファイル名AssemblyInfo.csは、ソースファイルとして慣習的に使用され、開発者は、構築中のアセンブリ全体を記述するメタデータ属性を配置します。

[AssemblyTitle]

この属性は、この特定のアセンブリに名前を付けるために使用されます。

[assembly: AssemblyTitle("MyProduct")]

[アセンブリ製品]

この属性は、この特定のアセンブリが対象とする製品を記述するために使用されます。複数のアセンブリは同じ製品のコンポーネントになることがあります。その場合、すべてのコンポーネントはこの属性に対して同じ値を共有できます。

[assembly: AssemblyProduct("MyProduct")]

グローバルおよびローカルAssemblyInfo

グローバルでより良いDRYnessが得られるようにするには、分散があるプロジェクトに対してAssemblyInfo.csと異なる値を入れるだけで済みます。この使用法は、製品に複数のビジュアルスタジオプロジェクトがあることを前提としています。

GlobalAssemblyInfo.cs

using System.Reflection;
using System.Runtime.InteropServices;
//using Stackoverflow domain as a made up example    

// It is common, and mostly good, to use one GlobalAssemblyInfo.cs that is added 
// as a link to many projects of the same product, details below
// Change these attribute values in local assembly info to modify the information.
[assembly: AssemblyProduct("Stackoverflow Q&A")]
[assembly: AssemblyCompany("Stackoverflow")]
[assembly: AssemblyCopyright("Copyright © Stackoverflow 2016")]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("4e4f2d33-aaab-48ea-a63d-1f0a8e3c935f")]
[assembly: ComVisible(false)] //not going to expose ;)

// Version information for an assembly consists of the following four values:
// roughly translated from I reckon it is for SO, note that they most likely 
// dynamically generate this file
//      Major Version  - Year 6 being 2016
//      Minor Version  - The month
//      Day Number     - Day of month
//      Revision       - Build number
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below: [assembly: AssemblyVersion("year.month.day.*")]
[assembly: AssemblyVersion("2016.7.00.00")] 
[assembly: AssemblyFileVersion("2016.7.27.3839")]

AssemblyInfo.cs - プロジェクトごとに1つ

//then the following might be put into a separate Assembly file per project, e.g.
[assembly: AssemblyTitle("Stackoveflow.Redis")]

GlobalAssemblyInfo.csをローカルプロジェクトに追加するには、 次の手順を実行します

  1. プロジェクトのコンテキストメニューで[Add / Existing Item ...]を選択します。
  2. GlobalAssemblyInfo.csを選択します。
  3. 右側の小さな下向きの矢印をクリックして、Add-Buttonを展開します。
  4. ボタンのドロップダウンリストで[リンクとして追加]を選択します

[AssemblyVersion]

この属性は、アセンブリにバージョンを適用します。

[assembly: AssemblyVersion("1.0.*")]

*文字は、コンパイルするたびに自動的にバージョンの一部を自動インクリメントするために使用されます(しばしば "ビルド"番号のために使用されます)

アセンブリ属性の読み取り

.NETの豊富なリフレクションAPIを使用すると、アセンブリのメタデータにアクセスできます。たとえば、次のコードを使用してthisアセンブリのtitle属性を取得できます

using System.Linq;
using System.Reflection;

...

Assembly assembly = typeof(this).Assembly;
var titleAttribute = assembly.GetCustomAttributes<AssemblyTitleAttribute>().FirstOrDefault();

Console.WriteLine($"This assembly title is {titleAttribute?.Title}");

自動バージョン管理

ソース管理のコードには、デフォルトで(SVN idsまたはGit SHA1ハッシュ)または明示的に(Gitタグ)バージョン番号があります。 AssemblyInfo.csのバージョンを手動で更新するのではなく、ビルド時のプロセスを使用して、ソース管理システムからAssemblyInfo.csファイルに、つまりアセンブリにバージョンを書き込むことができます。

GitVersionTaskまたはSemVer.Git.Fody NuGetパッケージは、上記の例です。たとえば、GitVersionTaskを使用するには、プロジェクトにパッケージをインストールした後、AssemblyInfo.csファイルからAssembly*Version属性を削除します。これにより、GitVersionTaskがアセンブリのバージョン管理を担当します。

セマンティックバージョニングはますますデファクトスタンダードになっているので、これらのメソッドはSemVerに続くソースコントロールタグの使用を推奨しています。

共通のフィールド

AssemblyInfoのデフォルトフィールドを完成させることをお勧めします。情報はインストーラーによって選択され、プログラムと機能(Windows 10)を使用してプログラムをアンインストールまたは変更するときに表示されます。

最小値は次のとおりです。

  • AssemblyTitle - 通常は名前空間、 つまり MyCompany.MySolution.MyProject
  • AssemblyCompany - 法人名フルネーム
  • AssemblyProduct - マーケティングはここで見ることができます
  • AssemblyCopyright - そうでなければ厄介なように見えるように最新の状態に保つ

DLLのProperties Detailsタブを調べるとき、 'AssemblyTitle'は 'File description'になります。

[AssemblyConfiguration]

AssemblyConfiguration:AssemblyConfiguration属性には、アセンブリの作成に使用された構成が必要です。条件付きコンパイルを使用して、さまざまなアセンブリ構成を適切に組み込みます。以下の例のようなブロックを使用してください。よく使う設定をいくつでも追加できます。

#if (DEBUG)

[assembly: AssemblyConfiguration("Debug")]

#else

[assembly: AssemblyConfiguration("Release")]

#endif

[InternalsVisibleTo]

アセンブリのinternalクラスまたは関数を別のアセンブリからアクセス可能にする場合は、これを、 InternalsVisibleToおよびアクセスが許可されているアセンブリ名で宣言します。

組立中、このコード例ではMyAssembly.UnitTests呼び出すことが許可されているinternalからの要素をMyAssembly

[assembly: InternalsVisibleTo("MyAssembly.UnitTests")]

これは、不必要なpublic宣言を防ぐための単体テストに特に便利です。

[AssemblyKeyFile]

私たちのアセンブリをGACにインストールしたいときはいつでも、強力な名前を付ける必要があります。強力な命名アセンブリのためには、公開鍵を作成する必要があります。 .snkファイルを生成します。

厳密な名前のキーファイルを作成するには

  1. VS2015の開発者コマンドプロンプト(管理者アクセス権付き)
  2. コマンドプロンプトでcd C:\ Directory_Nameと入力し、Enterキーを押します。
  3. コマンドプロンプトで、sn -k KeyFileName.snkと入力し、Enterキーを押します。

keyFileName.snkが指定されたディレクトリに作成されたら、プロジェクト内でrefernceを与えます。 AssemblyKeyFileAttribute属性にsnkファイルへのパスを与え、クラスライブラリを構築するときにキーを生成します。

プロパティ - > AssemblyInfo.cs

[assembly: AssemblyKeyFile(@"c:\Directory_Name\KeyFileName.snk")]

ティは、ビルド後に強力な名前のアセンブリを作成します。あなたの強力な名前のアセンブリを作成した後、それをGACにインストールすることができます

ハッピーコーディング:)



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow