4.6.1 F#app抛出FileNotFoundException:FSharp.Core

时间:2018-03-31 05:22:09

标签: .net visual-studio f# nuget

我有一个.NET4.6.1项目,如果我链接到Nuget的FSharp.Core最新版本(在编写4.3.4时)会引发以下异常:

  

无法找到自定义attr构造函数图像:   /Users/andres/Documents/Code/MyApp/src/MyApp/bin/Debug/MyApp.exe   mtoken:0x0a000015由于:无法加载文件或程序集   ' FSharp.Core,Version = 4.4.3.0,Culture = neutral,   公钥= b03f5f7f11d50a3a'或其中一个依赖项。   汇编:FSharp.Core,Version = 4.4.3.0,Culture = neutral,   PublicKeyToken = b03f5f7f11d50a3a类型:成员:

奇怪的是,在编译之后,我只在.dll文件夹中找到obj但在bin文件夹中找不到:

$ find ./src | grep FSharp.Core
./src/MyApp/obj/Debug/FSharp.Core.dll

这是预期的吗?我正在使用VS4Mac。

1 个答案:

答案 0 :(得分:2)

事实证明,当将FSharp.Core nuget依赖项升级到新版本时,.fsproj文件中发生的真正差异是:

     <Reference Include="FSharp.Core">
-      <HintPath>..\..\packages\FSharp.Core.4.1.0.2\lib\net45\FSharp.Core.dll</HintPath>
+      <HintPath>..\..\packages\FSharp.Core.4.3.4\lib\net45\FSharp.Core.dll</HintPath>
+      <Private>False</Private>
     </Reference>

(但看到这一点并不清楚,因为它正在将<Reference>标记移动到文件中的其他位置。)

请注意,上面添加了<Private>标记。如果您执行what is advised in this other answer to a similar question(我没有声称它是重复的,因为那个是关于Windows而且这个是macOS),也就是说,将引用标记为LocalCopy = true,那么Visual Studio将删除{ {1}} XML元素,一切都开始重复。