當在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