基本的に、コンストラクターでAssemblyTitleを設定したいのですが、これを行う理由は、プログラムのバージョンがいくつかあり、それらがすべて同じAssemblyInfo.csを共有しているためです。
私はそのようなものを探しています
AssemblyTitleAttribute title = "Full Version";
しかし、これは機能しません、何かアイデアはありますか?
属性はコンパイル時定数であるため、「コンストラクター内」にすることはできません。次の 2 つのオプションがあります。
[assembly: AssemblyTitle("Sandbox Console")]
(名前空間を宣言する前に配置)#if
ディレクティブを定義します。Conditional Compilation Symbols
Build
// AssemblyInfo.cs //(をちょきちょきと切る) [アセンブリ: AssemblyCopyright("Copyright © 2011")] [アセンブリ: AssemblyTrademark("")] [アセンブリ: AssemblyCulture("")] #if FULL_VERSION [アセンブリ: AssemblyTitle("XYZ アプリ (フル バージョン)")] #そうしないと [Assembly: AssemblyTitle("XYZ アプリ (体験版)")] #endif
これは AssemblyInfo.cs ファイルで設定できます。他では変えられないと思います。とにかく、実行時に動的に設定することはできなかったので、カスタムクラスではなくそこに設定することもできます。
名前を変更するには、アセンブリを再コンパイルする必要があります。
Visual Studioプロジェクトテンプレートはデフォルトで「AssemblyInfo.cs」を生成しますが、これはデフォルトの場所にすぎません。実際、属性は任意のファイルに配置できます。唯一の制限は、「アセンブリスコープ」内に配置する必要があるため、次のコードは機能しません。
namespace MySpace
{
[assembly: System.Reflection.AssemblyVersion("1.0.0.0")]
}
同じことがクラスと他のすべてのブロックにも当てはまります(どちらも機能しません)。
class MyPlace
{
[assembly: System.Reflection.AssemblyVersion("1.0.0.0")]
}
ソースコードで指定されたアセンブリ情報は、コンパイルプロセス中に出力アセンブリに埋め込まれるため、コードで値を「動的に」変更する方法はありません(コードは後で実行されるため)。
私は個人的に、すべてのローカル作業中にデフォルトバージョンを使用するのが本当に好きです。次に、ビルドサーバー(TeamcityまたはTeam Foundation Server)によってトリガーされるある種のビルドスクリプトによって、アセンブリの正しいバージョンが設定されます。
後でアセンブリのプロパティを本当に変更したい場合は、http://www.mono-project.com/Cecilを参照してください。
プロパティはコンパイルされたアセンブリに添付され、実行時に変更できません。変更して新しいアセンブリ ファイルを作成しない限り (MSDN サンプル: http://msdn.microsoft.com/en-us/library/system.reflection.assemblytitleattribute.aspxに従って)。
動的なアプリケーション タイトルが必要な場合は、別のものを使用してください。