我有一个.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。
答案 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元素,一切都开始重复。