これは、私がしばらく前に尋ねたこの質問の続きです。
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));
}
}