1

基本的に、コンストラクターでAssemblyTitleを設定したいのですが、これを行う理由は、プログラムのバージョンがいくつかあり、それらがすべて同じAssemblyInfo.csを共有しているためです。

私はそのようなものを探しています

AssemblyTitleAttribute title = "Full Version";

しかし、これは機能しません、何かアイデアはありますか?

4

4 に答える 4

3

属性はコンパイル時定数であるため、「コンストラクター内」にすることはできません。次の 2 つのオプションがあります。

  1. フルバージョン固有のクラス[assembly: AssemblyTitle("Sandbox Console")](名前空間を宣言する前に配置)
  2. AssemblyInfo.cs でa を使用して名前を選択し、ビルド環境を設定して、[プロパティ] タブで#ifディレクティブを定義します。Conditional Compilation SymbolsBuild
// AssemblyInfo.cs

//(をちょきちょきと切る)

[アセンブリ: AssemblyCopyright("Copyright © 2011")]
[アセンブリ: AssemblyTrademark("")]
[アセンブリ: AssemblyCulture("")]
#if FULL_VERSION
    [アセンブリ: AssemblyTitle("XYZ アプリ (フル バージョン)")]
#そうしないと
    [Assembly: AssemblyTitle("XYZ アプリ (体験版)")]
#endif

于 2013-01-09T20:49:23.270 に答える
1

これは AssemblyInfo.cs ファイルで設定できます。他では変えられないと思います。とにかく、実行時に動的に設定することはできなかったので、カスタムクラスではなくそこに設定することもできます。

名前を変更するには、アセンブリを再コンパイルする必要があります。

于 2013-01-09T20:41:56.807 に答える
0

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を参照してください。

于 2013-01-09T20:55:11.767 に答える
0

プロパティはコンパイルされたアセンブリに添付され、実行時に変更できません。変更して新しいアセンブリ ファイルを作成しない限り (MSDN サンプル: http://msdn.microsoft.com/en-us/library/system.reflection.assemblytitleattribute.aspxに従って)。

動的なアプリケーション タイトルが必要な場合は、別のものを使用してください。

于 2013-01-09T20:50:07.293 に答える