当在SomeLib.fs单独Fsharp项目文件中的以下代码编译:能在Fsharp脚本文件没有打开命名空间
namespace SomeNameSpace
type SomeType =
member this.SomeMember = "Some member"
,并要引用,并像一个脚本文件中使用此类型:
#I @"c:/pathToDll/"
#r "SomeLib.dll"
这是不可能的,虽然dll的路径是正确的,我检查了一切。另外,当SomeLib.fs文件位于同一个项目中并且被#load引用时,您仍然无法打开命名空间。
我知道你可以把这个类型放在一个模块中,但是我不能这样做,因为这个类型已经被用作一个Wcf服务类型。
请注意:当您使用依赖#I导入的#r引用时,智能感知通常不适用于引用中的类型。但是,当您使用“独立”#r参考(完整路径,不带#I)时,智能感知可以正常工作。这就是为什么我几乎从不使用#I,但它会是非常实用的,否则... –
“我无法添加对外部F#库DLL的引用”:添加对外部F#库DLL的引用是绝对有可能的。有时你必须小心引用的顺序。如果F#dll依赖于C#dll,则必须先引用c#dll,然后再引用F#dll ... –
@MarcSigrist我试过上面的代码,它绝对没有引用F#dll,我可以向你保证。唯一的可能性仍然是我在上面的代码中做了一些愚蠢的事情。我也在这里发布了一个更详细的答案和解决方案:http://stackoverflow.com/questions/16937387/f-and-c-sharp-web-service-cannot-open-namespace – halcwb