3

(GAC 内の) 共有アセンブリに静的フィールドがあり、フィールドの値が更新された場合、それは共有アセンブリを参照しているクライアント アプリケーションに反映されますか? それとも、クライアント アプリケーションを再構築する必要がありますか?

4

3 に答える 3

6

フィールドが次のように表現されている場合const:

public const int Foo = 100;

次に、値がそれらのクライアントに組み込まれるため、すべてのクライアント アプリを再構築する必要があります。

public static readonly フィールドの場合:

public static readonly int Foo = 100;

...その後、クライアントを再構築する必要はありません。値は、実行時にアセンブリからフェッチされます。(もちろん、クライアントは新しいアセンブリを使用して実行する必要があるため、バージョン管理などを考慮する必要があります)。

于 2013-01-15T13:46:26.787 に答える
5

.NET では、静的はAppDomainごとにあるため、アセンブリが にある場合でも、アセンブリでGAC宣言されている静的変数のスコープは、参照元の AppDomain にのみ存在します。リテラルに初期化された静的として話している場合(読み取り専用かどうかに関係なく)、再コンパイルせずに、それを使用するすべてのアセンブリに自動的に反映されます。

于 2013-01-15T13:46:02.477 に答える
0

フィールドが定数としてマークされていない場合、フィールドにアクセスするたびに値が返されるため、クライアントの再コンパイルは必要ありません。

定数としてマークされている場合、フィールドの値はコンパイル時に「焼き付け」されるため、クライアントは再コンパイルを必要とします。

于 2013-01-15T13:46:34.710 に答える