应用程序未显示更新的字符串值

Application not showing updated string value

我有一个程序集 class 有 const 字符串变量,

public class Data {     
     public const string Version = "1.0.0";
}

这将在另一个程序集中用于分配给字符串 属性,

 public class ViewModel 
 {
     AppVersion = Data.Version;

     public String AppVersion 
     {
         get;
         set;
     }
 }

此 AppVersion 将显示在 UI 个应用程序上。

问题是,我已将此版本更新为 1.0.1 并仅构建此程序集具有数据 class 并将 dll 移至生产环境。

但是,这个新版本没有显示,仍然显示旧版本 (1.0.0)。

当我构建另一个具有 AppVersion (ViewModel) 的程序集时,会显示新版本。

发生了什么问题?我的程序集如何保留旧版本值?

这是 conststatic readonly 之间的主要区别。把你Dataclass改成这样就好了:

public class Data {     
    public static readonly string Version = "1.0.0";
}

解释:

AppVersion = Data.Version 的编译时,您的编译器会看到 Data.Versionconst string,因此它只需将这一行替换为 AppVersion = "1.0.0"(为了优化)。

另一方面,当你 Data.Versionstatic readonly string 编译器会知道他(或她?Roslyn)需要引用 Data 类型来获取这个静态字段值,因此当您切换 Data dll - 您的 ViewModel dll 将看到一个实际值。