おすすめじゃない方法
おすすめじゃないけど簡単な方法として、既存のAssemblyInfo.csを置き変えてしまう方法がある。Community Tasksの.targetsをImportしたあと、以下の感じのターゲットを作れば、既存のAssemblyInfo.csを置き変えることができる。
しかし、この方法ではプロジェクトが複数あった場合に、プロジェクト別に値を設定することができない。
これを作ったあと、Community Tasks的におすすめな方法があることがわかった(雛形がある)。
おすすめの方法
ざっくり言うと、GlobalAssemblyInfo.csを作り、それを参照する。1. GlobalAssemblyInfo生成ターゲットを作る
Community Tasksをインポート後、このようなターゲットを作る。次のプロセスのために1回実行しておく。
2. GlobalAssemblyInfo.csをリンクとして追加する
各プロジェクトで、GlobalAssemblyInfo.csを追加する。Visual Studioからは、「追加>既存の項目...」で追加するが、追加ボタンの右の▼を押して、リンクとして追加するのを忘れない。
3. 既存のAssemblyInfo.csから重複する値を削除する
GlobalAssemblyInfoに定義した値は、既存のAssemblyInfo.csから削除しておく。これで、各プロジェクト個別の値をセットすることを可能にしつつも、バージョン等々をMSBuildから管理できるようになった。
GlobalAssemblyInfoの情報を取得する
アセンブリの情報は、リフレクションで取得することが可能だが、GetCustomAttributesが冗長な記述を要求したりして面倒。しかし、AssemblyInfoタスクで、GenerateClass="true"にしておくと、「ThisAssembly」クラスを作ってくれる。
そのため、以下のようなシンプルな形でコードから情報を取得可能。
string product = ThisAssembly.AssemblyProduct;
0 件のコメント:
コメントを投稿