C#项目未在引用的库中提取最新的F#类型声明

时间:2019-05-10 11:21:56

标签: visual-studio f#

在C#库中无法识别在F#库中声明的“坐标”类型:

我已经执行了以下步骤:

  1. 我关闭了解决方案
  2. 删除了我所有的bin目录
  3. 删除了我的“ .vs”目录
  4. 重新开放的Visual Studio
  5. 重建我的解决方案

完成上述步骤后,我的C#项目仍然没有在F#项目中获取最新的类型声明。

此外,我已经反复删除F#项目引用并将其重新添加到C#项目中。

版本:VS2019 Preview 3.0

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:5)

似乎问题在于您的坐标是一个命名元组,并且没有为其生成任何实际的类。 如果您尝试反汇编您引用的库,则它将看起来像这样: decompiled According to MSDN,与元组互操作足以使用/返回C#元组。 因此,您可以在代码中使用C#元组创建坐标列表: var coordinates = new List<(Test.Latitude, Test.Longitude)>();

答案 1 :(得分:3)

您定义Coordinate的方式:

type Coordinate = Latitude * Longitude

是一个type abbreviation,它引用了LatitudeLongitude的元组。

此类型缩写不是真实类型,它是另一种类型的另一个名称,缩写或别名。在定义它的F#程序集之外的所有内容都看不到类型缩写。它不是F#程序集中的实型。