Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试获取程序集版本信息时出现所有引用异常_C#_Asp.net_Webforms - Fatal编程技术网

C# 尝试获取程序集版本信息时出现所有引用异常

C# 尝试获取程序集版本信息时出现所有引用异常,c#,asp.net,webforms,C#,Asp.net,Webforms,我正在母版页的部分中尝试获取程序集版本信息。我必须在HTML部分这样做。这是我得到空引用异常的行: <script src="/MyViewCore.js?v=<% Response.Write( System.Diagnostics.FileVersionInfo.GetVersionInfo( System.Reflection.Assembly.GetExecutingAssembly().Location ).FileVersion.Replace( ".", "" ) );

我正在母版页的部分中尝试获取程序集版本信息。我必须在HTML部分这样做。这是我得到空引用异常的行:

<script src="/MyViewCore.js?v=<% Response.Write( System.Diagnostics.FileVersionInfo.GetVersionInfo( System.Reflection.Assembly.GetExecutingAssembly().Location ).FileVersion.Replace( ".", "" ) ); %>" type="text/javascript"></script>
我不明白为什么这是个问题

您能帮我解决这个问题吗?

您调用FileVersionInfo.GetVersionInfo的方式不安全

GetVersionInfo的文档说明,如果无法读取任何版本信息,它将返回一个仅包含所请求文件名的对象,这意味着FileVersion属性将为null

如果文件不包含版本信息,则FileVersionInfo仅包含所请求文件的名称


请注意,您的代码不必要地冗长,并且调用Response.Write是不必要的,因为您可以使用所需的速记来缩小对象的哪部分为空-它可以是System.Reflection.Assembly.GetExecutionGassembly或.FileVersion。您应该能够使用断点在调试中完成此操作。拆分这组代码,GetExecutionGassembly不会返回null,但GetVersionInfo可能会返回null,即使您有一个对象,其所有属性都是可选的。更不用说它可能会返回特定于区域性的版本信息。。。
System.Diagnostics.FileVersionInfo.GetVersionInfo( 
    System.Reflection.Assembly.GetExecutingAssembly().Location
)
    .FileVersion
    .Replace( ".", "" );
<%@ Import Namespace="System.Diagnostics" %>
<%@ Import Namespace="System.Reflection" %>
<%
    String assembly = Assembly.GetExecutingAssembly().Location;
    FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo( assembly );
    String version = versionInfo.FileVersion?.Replace(".", "") ?? "someFallbackValue";
%>

...

<script src="/MyViewCore.js?v=<%: version %>" type="text/javascript"></script>