我正在尝试将 FSharp PowerPack 用于 ArgParser 库,但是在我的机器上遇到了一些严重的问题,它似乎从 GAC 加载了错误版本的 FSharp.Core.dll,然后导致 ArgParser 的加载失败. 理想情况下,我会解决这个问题(因为它可以在我同事的计算机上运行),但我已经尝试了从系统中卸载和重新安装 FSharp 二进制文件的各种组合都无济于事。
由于我真的不喜欢这样一个事实,即我不能因为 GAC而将已知为正确的DLL 删除在可执行目录中,如果有任何方法可以禁用在 GAC 中的搜索,我会很乐意这样做.
我知道这个解决方案有点麻烦,但现在我只需要让它加载和工作,我会尝试任何事情。
编辑
还有一些信息。这是项目的负载输出。
'PowerPackTest.exe' (Managed (v4.0.30319)): Loaded 'C:\WINNT\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'PowerPackTest.exe' (Managed (v4.0.30319)): Loaded 'C:\Projects\PowerPackTest\PowerPackTest\bin\Debug\PowerPackTest.exe', Symbols loaded.
'PowerPackTest.exe' (Managed (v4.0.30319)): Loaded 'C:\WINNT\Microsoft.Net\assembly\GAC_MSIL\FSharp.Core\v4.0_4.0.0.0__b03f5f7f11d50a3a\FSharp.Core.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'PowerPackTest.exe' (Managed (v4.0.30319)): Loaded 'C:\WINNT\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'PowerPackTest.exe' (Managed (v4.0.30319)): Loaded 'C:\WINNT\assembly\GAC_MSIL\FSharp.PowerPack\2.0.0.0__a19089b1c74d0809\FSharp.PowerPack.dll'
'PowerPackTest.exe' (Managed (v4.0.30319)): Loaded 'C:\WINNT\assembly\GAC_MSIL\FSharp.Core\2.0.0.0__b03f5f7f11d50a3a\FSharp.Core.dll'
Run Code Online (Sandbox Code Playgroud)
如您所见,它首先加载 FSharp.Core v4,然后在最后一秒加载 v2。这不会发生在我同事的机器上。
预构建的 PowerPack 二进制文件是针对 CLR v2 编译的,它们也引用了 FSharp.Core v2。这可能是导致此问题的原因。我真的不明白为什么不提供 PowerPack 的 .NET 4 版本(或在 NuGet 中!),但您可以通过以下两种方式解决:
您可以设置程序集绑定重定向,但我不知道这是否适用于fsi.exe.
或者,您可以将源代码下载到 F# PowerPack 并编译您自己的 .NET 4 版本。这很容易。
| 归档时间: |
|
| 查看次数: |
2379 次 |
| 最近记录: |