0

在最新的 BETA 4.37.11 中,使用 FileVersionInfo.GetVersion 时会引发异常“路径不是合法形式”。

在 System.IO.Path.NormalizePath(String path, Boolean fullCheck, Int32 maxPathLength) 在 System.IO.Path.GetFullPathInternal(String path)
在 System.IO.Path.GetFullPath(String path) 在 System.Diagnostics.FileVersionInfo.GetFullPathWithAssert (字符串文件名)在 System.Diagnostics.FileVersionInfo.GetVersionInfo(字符串文件名)

特别是在尝试使用尝试调用的 MvcMiniProfiler.ProfiledDbConnection 时会发生这种情况

Version = FileVersionInfo.GetVersionInfo(typeof(MiniProfiler.Settings).Assembly.Location).ProductVersion;

在静态 Settings() ctor 中。

这在使用 LINQPad 的 4.31 版本时工作正常。在 BETA 中,程序集的 Location 属性显示为“”,而在 4.31 中,它返回文件的正确路径。

有什么想法或解决方法可以让它发挥作用吗?在我的脚本中,我已经习惯了新 BETA 的一些功能,并且还没有真正期待放弃它们。

还找到了这个“包含清单的加载文件的位置。如果加载的文件是影子复制的,则位置是影子复制后的文件的位置。如果程序集是从字节数组加载的,例如当使用 Load(Byte[]) 方法,Location 是一个空字符串 ("")。

想知道 LINQPad Beta 是否改变了它加载程序集的方式?

4

1 回答 1

1

LINQPad 确实改变了它在 4.3x 中加载程序集的方式(以避免在查询运行时锁定用户引用)。由于您描述的问题(程序集丢失了它们的位置和代码库),该机制在 4.4x 中进行了更改,因此当 LINQPad 隐藏它们时,引用的程序集具有物理存在。尝试最新的测试版 - 它应该可以解决您的问题。

于 2012-04-13T07:46:23.040 回答