F# で宣言された名前空間は、c# プロジェクトでは使用できず、オブジェクト ブラウザーからも表示できません。
通常の F# ライブラリ プロジェクトをビルドしましたが、プロジェクトをビルドして C# プロジェクトに参照した後でも、目的の名前空間にアクセスできません。
また、オブジェクト ブラウザでも表示できません。ビルドされていないというエラーが表示されます。9月のリリースで実行していますが、誰かが私のエラーを指摘できますか?
F# バージョン 1.9.6.0
(6) 編集: dll を直接参照すると問題が解決しました。プロジェクトを参照するとコンパイルできますが、インテリジェンスは機能しません。dll が直接参照されている場合、インテリジェンスは完全に機能します。
これは、.fs ファイルにあるコードです。
#light
namespace Soilsiu.Core
module public Process =
open System.Xml.Linq
let private xname (tag:string) = XName.Get(tag)
let private tagUrl (tag:XElement) = let attribute = tag.Attribute(xname "href")
attribute.Value
let Bookmarks(xmlFile:string) =
let xml = XDocument.Load(xmlFile)
xml.Elements <| xname "A" |> Seq.map(tagUrl)
let PrintBookmarks (xmlFile:string) =
let list = Bookmarks(xmlFile)
list |> Seq.iter(fun u -> printfn "%s" u)
(5) 編集: ReSharper 4.0 が問題になる可能性はありますか?
(4) 編集: オブジェクト ブラウザーが結果のアセンブリを読み取れないと言うとき、オブジェクト ブラウザーでアセンブリを開こうとすると、プロジェクトがまだビルドされていないことを示すエラーが表示されることを意味します。それでも、リフレクターを使用してアセンブリを読み取ることができます。
(3) 編集: Reflector は dll を逆アセンブルできますが、Object Browser はそれを読み取ることができません。
(2) 編集: F# バージョンを 1.9.6.2 にアップグレードしましたが、結果は同じです
(1)編集:dllをC#に逆アセンブルできました:(ここではすべて問題ないようです)
namespace Soilsiu.Core
{
[CompilationMapping(7)]
public static class Crawler
[CompilationMapping(7)]
public static class Process
}
[CompilationMapping(7)]
public static class Process
{
// Methods
static Process();
public static IEnumerable<string> Bookmarks(string xmlFile);
public static void PrintBookmarks(string xmlFile);
internal static string tagUrl(XElement tag);
internal static XName xname(string tag);
// Nested Types
[Serializable]
internal class clo@13 : FastFunc<XElement, string>
{
// Methods
public clo@13();
public override string Invoke(XElement tag@9);
}
[Serializable]
internal class clo@17 : FastFunc<string, Unit>
{
// Methods
public clo@17();
public override Unit Invoke(string u);
}
}