禁用搜索 GAC

Ada*_*ile 6 .net c# f# gac

我正在尝试将 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。这不会发生在我同事的机器上。

Joe*_*ler 5

预构建的 PowerPack 二进制文件是针对 CLR v2 编译的,它们也引用了 FSharp.Core v2。这可能是导致此问题的原因。我真的不明白为什么不提供 PowerPack 的 .NET 4 版本(或在 NuGet 中!),但您可以通过以下两种方式解决:

您可以设置程序集绑定重定向,但我不知道这是否适用于fsi.exe.

或者,您可以将源代码下载到 F# PowerPack 并编译您自己的 .NET 4 版本。这很容易。

  • 我想通了...... System.Numerics 显然曾经是 FSharp.Core 的一部分,但现在在它自己的 DLL 中......一旦我添加了它,BigInteger 被发现并且它构建得很好。而且,它现在适用于我的项目,因为它在 v4.0 上。谢谢! (3认同)
  • 我也不明白为什么没有 PowerPack 4.0 发行版。我需要它几次并最终自己构建它(这相当简单)。 (2认同)