在最新的 BETA 4.37.11 中,使用 FileVersionInfo.GetVersion 时,它会抛出异常"路径不是合法形式的"。
at System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength) at System.IO.Path.GetFullPathInternal(String path)
at System.IO.Path.GetFullPath(String path) at System.Diagnostics.FileVersionInfo.GetFullPathWithAssert(String 文件名)在 System.Diagnostics.FileVersionInfo.GetVersionInfo(String fileName)
具体来说,当尝试使用 MvcMiniProfiler.ProfiledDbConnection 时,会发生这种情况,该连接尝试调用
Version = FileVersionInfo.GetVersionInfo(typeof(MiniProfiler.Settings).Assembly.Location).ProductVersion;
在静态设置() ctor中。
这在使用 LINQPad 的 4.31 版本时工作正常。 在 BETA 中,程序集的 Location 属性显示为 ",而在 4.31 中,它返回文件的正确路径。
有什么想法或解决方法可以做到这一点吗? 在我的脚本中,有一些新BETA的功能我已经习惯了,并且还没有真正期待放弃它们。
还找到了这个"包含清单的加载文件的位置。如果加载的文件是卷影复制的,则"位置"是卷影复制后文件的位置。如果程序集是从字节数组加载的,例如在使用 Load(Byte[]) 方法时,则 Location 为空字符串 (")"。
想知道 LINQPad Beta 是否改变了它加载程序集的方式?
LINQPad 确实在 4.3x 中更改了加载程序集的方式(以避免在查询运行时锁定用户引用)。由于您描述的问题(程序集丢失其位置和代码库),该机制在 4.4x 中进行了更改,以便引用的程序集在 LINQPad 隐藏它们时具有物理存在。尝试最新的测试版 - 它应该可以解决您的问题。