在C#项目中引用F#dll时出现问题

在C#项目中引用F#dll时出现问题,c#,dll,f#,reference,C#,Dll,F#,Reference,如果答案显而易见,请原谅我 我创建了一个VisualStudio解决方案并向其中添加了两个项目,一个是F#Library(称为MathLibrary),第二个是C#frontend(称为frontend,我意识到我的创造力) 因此,我在前端项目中添加了对MathLibraryDLL的引用,编译了MathLibraryDLL(以确保),并尝试在frontend项目中使用它。这时,我的编译器抱怨它是一个未定义的引用。我的理解是,添加适当的引用将允许我访问我的DLL,但显然我错过了一个重要的步骤 有什

如果答案显而易见,请原谅我

我创建了一个VisualStudio解决方案并向其中添加了两个项目,一个是F#Library(称为
MathLibrary
),第二个是C#frontend(称为
frontend
,我意识到我的创造力)

因此,我在前端项目中添加了对
MathLibrary
DLL的引用,编译了
MathLibrary
DLL(以确保),并尝试在
frontend
项目中使用它。这时,我的编译器抱怨它是一个未定义的引用。我的理解是,添加适当的引用将允许我访问我的DLL,但显然我错过了一个重要的步骤


有什么帮助吗?

它是否会显示为
Module1.SomeClass
。F#library项目中的默认文件称为
Module1
,如果不使用
名称空间
模块
声明启动源代码文件,则在模块中生成与文件名同名的代码


您可以尝试将
namespace FsLib
添加到定义某个类的F库代码的顶部,然后查看
FsLib.SomeClass
是否在C中工作。

它是否可能显示为
Module1.SomeClass
。F#library项目中的默认文件称为
Module1
,如果不使用
名称空间
模块
声明启动源代码文件,则在模块中生成与文件名同名的代码

您可以尝试将
名称空间FsLib
添加到定义某个类的F#library代码的顶部,然后查看
FsLib.SomeClass
是否在C#中工作。

F#library构建成功了吗?如果您使用Reflector打开DLL文件,是否可以看到该DLL文件以及它是否包含任何类和名称空间

在任何情况下,您还需要添加对
FSharp.Core.dll
(这是一个包含核心F类型(如列表等)的库,并且被F编译器生成的任何dll引用)的引用。但是,我想如果您只需要添加此引用,您会收到不同的错误消息。

F#library构建成功了吗?如果您使用Reflector打开DLL文件,是否可以看到该DLL文件以及它是否包含任何类和名称空间


在任何情况下,您还需要添加对
FSharp.Core.dll
(这是一个包含核心F类型(如列表等)的库,并且被F编译器生成的任何dll引用)的引用。但是,如果您只需要添加此引用,则可能会收到不同的错误消息。

文件名与其中包含的名称空间/模块之间没有关系。。。除非完全省略任何名称空间或模块声明;在这种情况下,编译采用与文件同名的模块。虽然我很高兴您能够编译,但我认为您还没有找到实际的问题/解决方案。

文件名与其中包含的名称空间/模块之间没有任何关系。。。除非完全省略任何名称空间或模块声明;在这种情况下,编译采用与文件同名的模块。虽然我很高兴您能够编译,但我认为您没有发现实际的问题/解决方案。

您从哪里获得“未定义的引用”以及实际的错误消息是什么?这听起来像是缺少名称空间或其他东西…当我尝试将类或方法引用为DLL.class时,我得到“名称'MathLibrary'在当前上下文中不存在”您从何处获得“未定义引用”“实际的错误消息是什么?这听起来像是缺少名称空间或其他什么…当我尝试将一个类或方法引用为DLL.class时,我得到“当前上下文中不存在名称‘MathLibrary’。OK,我尝试了此方法,但无效。此时,我意识到.fs文件的名称与我使用的名称空间不同。我不确定为什么文件需要与名称空间相同的名称(因为我可以在同一名称空间中有多个文件),但这就是导致它编译的原因properly@tzenes如果您找到了解决方案,请考虑将其添加为一个答案并接受它。@ tStult:F.FS文件的名称之间没有关系。其中包含的名称空间/模块。。。除非完全省略任何名称空间或模块声明;在这种情况下,编译采用与文件同名的模块。虽然我很高兴您能够编译,但我认为您没有想到实际的问题/解决方案。@pblasucci您介意将其作为一个答案,因为它是我问题的正确答案吗?(假设一个模块与文件同名)好的,我尝试了这个,但没有成功。此时,我意识到.fs文件的名称与我使用的名称空间不同。我不确定为什么文件需要与名称空间相同的名称(因为我可以在同一名称空间中有多个文件),但这就是导致它编译的原因properly@tzenes如果您找到了解决方案,请考虑将其添加为一个答案并接受它。@ tStult:F.FS文件的名称之间没有关系。其中包含的名称空间/模块。。。除非完全省略任何名称空间或模块声明;在这种情况下,编译采用与文件同名的模块。虽然我很高兴您能够编译,但我认为您没有想到实际的问题/解决方案。@pblasucci您介意将其作为一个答案,因为它是我问题的正确答案吗?(假设模块与文件同名)