如果一个共享程序集(在 GAC 中)有一个静态字段,并且该字段的值被更新,这是否会反映在引用共享程序集的客户端应用程序中?或者客户端应用程序是否需要重建?
问问题
385 次
3 回答
6
如果该字段表示为 a const
:
public const int Foo = 100;
那么您需要重建所有客户端应用程序,因为该值将被纳入这些客户端。
如果它只是一个公共静态只读字段:
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 回答