C# 无法在VB.Net中调用F#扩展名

C# 无法在VB.Net中调用F#扩展名,c#,vb.net,f#,extension-methods,C#,Vb.net,F#,Extension Methods,已解决:IntelliSense不显示扩展名 假设我们在F#中得到了以下扩展方法: 但是与此等效的VB代码返回一个错误,它找不到integer类型的扩展方法: x.Increment() 'No method called "Increment()" for type Int32 虽然可以通过标准方式调用该方法: Increment(x) 'Works 那么,在调用F代码时处理VB和C的区别在哪里呢?为什么VB环境不能解决扩展方法呢?如果您构建一个常规的F库项目 namespace A op

已解决:IntelliSense不显示扩展名

假设我们在F#中得到了以下扩展方法:

但是与此等效的VB代码返回一个错误,它找不到integer类型的扩展方法:

x.Increment() 'No method called "Increment()" for type Int32
虽然可以通过标准方式调用该方法:

Increment(x) 'Works
那么,在调用F代码时处理VB和C的区别在哪里呢?为什么VB环境不能解决扩展方法呢?

如果您构建一个常规的F库项目

namespace A
open System.Runtime.CompilerServices
[<Extension>]
module Extension =
    [<Extension>]
    let Increment(value : System.Int32) = value + 1
然后VB将F#extension方法按预期
公共函数Increment()视为整数
,并正常工作,输出为
2


一个干净的实验并不表明F#定义的扩展方法有任何特定于VB的特性

如何声明
x
(在VB端)?我尝试过:Dim x作为整数/Int32或Dim x=0I,这三种方法都不适用于meDo您是否在范围内有适当的
导入
声明?这可能对我很有用:这确实有效,但出于某种原因,intellisense没有显示增量函数。。。也许正是因为这个原因,我在调试这个时生活很艰难。谢谢:)@TimKrüger是的,ReSharper也有一些问题:
Increment(x) 'Works
namespace A
open System.Runtime.CompilerServices
[<Extension>]
module Extension =
    [<Extension>]
    let Increment(value : System.Int32) = value + 1
Imports A.Extension
Module Module1
    Sub Main()
        Console.WriteLine((1).Increment())
    End Sub
End Module