代码隐藏中的.NET/C#字符串引用未加载更新的值

Ada*_*amW 4 .net c# string iis-6 code-behind

我似乎遇到了一个奇怪的问题,即字符串引用没有加载更新的值.

简而言之,我已经替换了包含一堆页面标题的DLL文件(App_Code.dll)(想想HTML页面标题),但是当从其他DLL引用时,这些值没有被更新.

这是一个示例页面代码隐藏的代码片段:

   this.Master.PageDescription = Constants.Titles.CardInfoPageDescription;
Run Code Online (Sandbox Code Playgroud)

Constants类被编译成App_Code.dll,我刚刚替换它.我还清除了缓存(在这种情况下是IIS 6),重新启动了计算机,并确保我的本地浏览器缓存为空.

但是,当我加载网页时,它没有加载Constants.Titles.CardInfoPageDescription的新值.这适用于所有网页.

我可以让它更新它以替换该页面的DLL的唯一方法,该页面根本没有改变...

知道为什么会这样吗?这个字符串引用是否实际上没有在运行时查找并内置到页面DLL中?

任何帮助是极大的赞赏!

谢谢,亚当

Luk*_*keH 5

让我猜一下:你的常量暴露为public const字段.

无论何时使用a const,其值都会在构建时嵌入到已编译的代码中,而不是在运行时动态引用.因此,当您随后替换声明常量的DLL时,替换的DLL之外的所有代码将继续使用旧值,直到重新编译为止.

在一个更哲学的说明 - 为什么你的"常数"被更新?仅使用const该值将永远,永远,永远改变.如果它可以改变那么它不是一个常数.

更实际的说明 - 揭露公共领域通常不被视为良好做法.请改用属性.(这个规则的一个可能的例外可能是永远不会改变的真正的常量.)