共享程序集中的静态字段

roh*_*han 3 c# gac

如果共享程序集(在GAC中)具有静态字段,并且字段的值已更新,那么是否会反映在引用共享程序集的客户端应用程序中?或者客户端应用程序是否需要重建?

Fel*_*ano 5

在.NET静态中,每个AppDomain都是如此,因此即使程序集在其中GAC,其中声明的任何静态变量的范围也只存在于引用的AppDomain中.如果你说的是一个初始化为文字的静态(独立地只读或不读),它将自动反映在使用它的所有程序集中,而不重新编译它们.


Jon*_*eet 5

如果该字段表示为const:

public const int Foo = 100;
Run Code Online (Sandbox Code Playgroud)

然后,您将需要重建所有客户端应用程序,因为该值将被烘焙到这些客户端.

如果它只是一个公共静态只读字段:

public static readonly int Foo = 100;
Run Code Online (Sandbox Code Playgroud)

...那么你将不需要重建客户端.该值将在执行时从程序集中获取.(当然,客户端需要使用新程序集执行,因此您需要考虑版本控制等)