程序集没有版本吗?

时间:2016-06-02 19:06:13

标签: c#

长话短说,如果我这样做:

string myV = Assembly.GetExecutingAssembly().GetName().Version.ToString();

有些东西会无效吗?我读了msdn,但没有指定GetName()Version部分。

2 个答案:

答案 0 :(得分:5)

该字段的技术上可能为null:

var name = Assembly.GetExecutingAssembly().GetName();
name.Version = null;
Console.WriteLine(name.Version == null);   // true

但我无法想到 为空的任何情况。因为检查我只是添加一个空检查并且如果 null则抛出自定义异常,因为诊断NullReferenceException可能很困难,因为你没有得到任何指示至于什么除了堆栈跟踪之外是null。

答案 1 :(得分:4)

版本将始终存在。

  

每个程序集都有一个版本号作为其标识的一部分。

https://msdn.microsoft.com/en-us/library/51ket42z(v=vs.110).aspx

顺便说一句,如果您使用的是C#6,在类似的情况下,当不确定返回什么方法时,您应该考虑使用null propogation运算符“?。”。通过这样做,您将确保它永远不会抛出空引用错误。

可能发生的最糟糕的结果是字符串为空。

string myV = Assembly.GetExecutingAssembly()?.GetName()?.Version?.ToString();