这是我不久前提出的这个问题的后续:
Assembly.GetExecutingAssembly() 性能
这个解决方案似乎很完美。现在我刚刚开始实施它,但它不起作用。我被System.TypeInitializationException
抛出,内部异常是旧的,Object reference not set to an instance of an object
. 现在我不确定为什么它不起作用。我的猜测是该static readonly
属性是在 Assembly 类之前实例化还是什么?
任何人都可以解释为什么会发生这种情况,任何修复,除了不使用 readonly 因为这很明显,也会受到欢迎,但不一定是预期的!
这是代码:
public class VersionHelper
{
private static readonly Version _applicationVersion = Assembly.GetEntryAssembly().GetName().Version;
public static string GetVersionText()
{
return string.Format("Version: {0}-{1}", _applicationVersion, Environment.MachineName.Substring(5));
}
}
称为:
protected void Page_Load(object sender, EventArgs e)
{
lblVersion.Text = VersionHelper.GetVersionText();
}
只是为了解释如果我这样做,它会起作用:
public class VersionHelper
{
public static string GetVersionText()
{
Assembly web = Assembly.GetExecutingAssembly();
AssemblyName webName = web.GetName();
return string.Format("Version: {0}-{1}", webName.Version, Environment.MachineName.Substring(5));
}
}