如果共享程序集(在GAC中)具有静态字段,并且字段的值已更新,那么是否会反映在引用共享程序集的客户端应用程序中? 或者客户端应用程序是否需要重建?
答案 0 :(得分:5)
在.NET静态中,每个AppDomain,所以即使程序集在GAC
中,其中声明的任何静态变量的范围也只存在于引用的AppDomain中。
如果你说的是一个初始化为文字的静态(独立地只读或不读),它将自动反映在使用它的所有程序集中,而不重新编译它们。
答案 1 :(得分:5)
如果该字段表示为const
:
public const int Foo = 100;
然后您将需要重建所有客户端应用程序,因为该值将被烘焙到这些客户端。
如果它只是一个公共静态只读字段:
public static readonly int Foo = 100;
...那么您将不需要重建客户端。该值将在执行时从程序集中获取。 (当然,客户端需要执行使用新程序集,因此您需要考虑版本控制等。)
答案 2 :(得分:0)
如果该字段未标记为常量,则不应要求重新编译客户端,因为每次访问该字段时都将返回该值。
如果它被标记为常量,那么客户端将需要重新编译,因为该字段的值在编译时被“烘焙”。