小编dlu*_*civ的帖子

在同一应用程序中解析对同一 .NET 程序集不同版本的编译时引用

在面向 .NET 4.0 的 F# 应用程序中使用 PowerPack 会带来一些痛苦

FSharp.PowerPack.dll仍然(为什么?他们会放弃它吗?)仅引用FSharp.Core.dll 2.0哪些针对 .NET 2.0。同时FSharp.Core.dll 4.0不兼容.NET 2.0。

它是如何去当两者FSharp.Core.dll 2.04.0在GAC?它加载,4.0因为它与当前的 .NET 框架兼容,然后告诉FSharp.PowerPack.dll一切都已经加载。这可以在 Visual Studio 调试器中、应用程序加载时和 Reflector 中遍历依赖项时看到。

一切都很好,直到我们需要以可移植的方式重新分发软件。当我们真正需要时,我们将复制FSharp.Core.dll 4.0(使用 .NET 4.0 进行声音)并复制FSharp.PowerPack.dll到应用程序本地代码库。然后它(突然!)抱怨FSharp.Core.dll 2.0没有满足对[from PowerPack]的引用。

通过简单地将引用重定向到 FSharp.Core.dll 的现有版本,可以像F# PowerPack Target Runtime主题中提到的那样,以残酷的方式轻松解决该问题。

那么问题是什么?

问题是当我们将安装的程序集提交给 GAC 时,为什么没有任何重定向就一切正常。对于 GAC,它似乎对 FSharp.Core.dll 2.0 本身的存在感到满意,然后它只是将其扔掉,使用 4.0 版本用于所有目的。这背后的逻辑是什么?

Jeffrey Richter通过 C#编写的CLR 似乎对此一无所知......

.net f#

5
推荐指数
1
解决办法
612
查看次数

标签 统计

.net ×1

f# ×1