我对我应该引用哪个 fsharp.core 以及如何做感到困惑



我正在尝试在 .net 4.6 上部署(这是 azure 应用程序使用的),所以我在我的.fsproj上引用了与该框架兼容的最新 fsharp.core,这是<TargetFSharpCoreVersion>4.4.0.0</TargetFSharpCoreVersion>

但是在我的代码中,我使用的是 Suave 2.0.0-rc8,它引用了一些 fsharp.core 4.0.0.1 ,可以从 nuget 获得的那个。

但不知何故,它有效!任何人都可以给我一个解释,即使它的工作原理有点简单化?怎么可能有两个fsharp.core,似乎并不像听起来那么核心。

:s

FSharp.Core 的 NuGet 版本不等于 FSharp.Core 的汇编版本。

FSharp.Core 的版本控制方案令人困惑,但是当您在 .NET 4.6 应用程序中使用 FSharp.Core 时,程序集版本为 4.4.0.0,即使它与版本 4.0.0.1 捆绑在 NuGet 包中也是如此。

你可以在Visual Studio中自己调查这个问题。例如,我有一个具有以下 NuGet 依赖项的小型应用程序:

Id                                  Versions 
--                                  -------- 
FsCheck                             {2.6.2}  
FsCheck.Xunit                       {2.6.2}  
FSharp.Core                         {4.0.0.1}
Unquote                             {3.1.2}  
xunit.abstractions                  {2.0.0}  
xunit.extensibility.core            {2.1.0}  
xunit.extensibility.execution       {2.1.0}  

您会注意到 FSharp.Core 的 NuGet 版本是 4.0.0.1。

如果在解决方案资源管理器中找到引用,则可以找到包含 FSharp.Core 的实际.dll文件。如果使用 Reflector 或 Visual Studio 对象浏览器打开它,您将看到程序集版本实际上是 4.4.0.0。

相关内容

最新更新