应用程序未显示更新的字符串值
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) 的程序集时,会显示新版本。
发生了什么问题?我的程序集如何保留旧版本值?
这是 const
和 static readonly
之间的主要区别。把你Data
class改成这样就好了:
public class Data {
public static readonly string Version = "1.0.0";
}
解释:
在 AppVersion = Data.Version
的编译时,您的编译器会看到 Data.Version
是 const string
,因此它只需将这一行替换为 AppVersion = "1.0.0"
(为了优化)。
另一方面,当你 Data.Version
是 static readonly string
编译器会知道他(或她?Roslyn)需要引用 Data
类型来获取这个静态字段值,因此当您切换 Data
dll - 您的 ViewModel
dll 将看到一个实际值。
我有一个程序集 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) 的程序集时,会显示新版本。
发生了什么问题?我的程序集如何保留旧版本值?
这是 const
和 static readonly
之间的主要区别。把你Data
class改成这样就好了:
public class Data {
public static readonly string Version = "1.0.0";
}
解释:
在 AppVersion = Data.Version
的编译时,您的编译器会看到 Data.Version
是 const string
,因此它只需将这一行替换为 AppVersion = "1.0.0"
(为了优化)。
另一方面,当你 Data.Version
是 static readonly string
编译器会知道他(或她?Roslyn)需要引用 Data
类型来获取这个静态字段值,因此当您切换 Data
dll - 您的 ViewModel
dll 将看到一个实际值。