F # deklarierten Namespace nicht im c # -Projekt oder sichtbar durch den Objekt-Browser ist

StackOverflow https://stackoverflow.com/questions/208008

  •  03-07-2019
  •  | 
  •  

Frage

F # deklarierten Namespace nicht im c # -Projekt oder sichtbar durch den Objekt-Browser ist.

Ich habe ein normales F # -Bibliothek Projekt gebaut, aber auch nachdem ich das Projekt und verweisen Sie auf mein C # Projekt bauen, ich bin nicht in der Lage, den gewünschten Namensraum zugreifen zu können.

Ich bin auch nicht in der Lage es im Objekt-Browser, um zu sehen, ich erhalte eine Fehlermeldung mir zu sagen, dass es nicht gebaut wurde. Ich bin auf der September-Release laufen kann jemand meine Fehler hinweisen?

F # Version 1.9.6.0

(6) Edit: Referenzierung die DLL direkt mein Problem behoben hat, ermöglicht das Projekt verweist mich zu kompilieren, aber die Intellisence funktioniert nicht. Wenn die DLL direkt die Intellisence funktioniert perfekt verwiesen wird.


Dies ist der Code in der .fs Datei gefunden

#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) Edit:? Könnte 4.0 das Problem sein ReSharper

(4) Edit: Wenn ich das Objekt Browser sage, ist nicht in der Lage, die resultierende Anordnung zu lesen, ich meine, dass, wenn ich versuche, die Montag in dem Objekt-Browser zu öffnen ich einen Fehler mir zu sagen, das Projekt ist noch nicht gebaut worden. noch einmal kann ich die Montage mit Reflektor lesen.

(3) Edit:. Reflector die DLL abmontieren kann aber der Objekt-Browser ist nicht in der Lage, es zu lesen

(2) Edit: Ich habe meine F # Version Upgrade auf 1.9.6.2 und immer noch die gleiche Konsequenz

(1) Edit: Ich konnte die DLL in C # abmontieren ich: (Alles scheint hier zu sein fein)

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);
    }
}
War es hilfreich?

Lösung

Was passiert, wenn Sie die erzeugte DLL direkt Referenz (das heißt, nicht über ein Projektverweis, sondern über eine Dateireferenz)?

Andere Tipps

Vielleicht IntelliSense ist nur vermasselt? Welche Compiler-Fehler erhalten Sie, wenn Sie versuchen, es in C # zu verwenden? Wenn Sie sagen, „der Objekt-Browser nicht in der Lage ist, es zu lesen:“ Was soll das bedeuten?

Für das, was es wert ist, ich dies auf ein F # -Bibliothek Projekt hinzugefügt, verwiesen sie (Projekt) von einer C # Konsolenanwendung, und war in der Lage, es zu benutzen. IntelliSense hat allerdings zunächst nicht arbeiten. (Hatte umzubauen.)

Wenn Sie eine solide Repro machen können, würde ich vorschlagen, es zu F # Bugs alias (fsbugs) per E-Mail.

Ich habe versucht, die gleiche Sache. Es sieht aus, als ob Visual Studio und ReSharper 4.0 nicht Fis aus irgendeinem Grunde verstehen. Wenn Sie das Meer von rotem Text und dem Mangel an intellisense ignorieren, wird es kompiliert in Ordnung.

Versuchen

  1. Stellen Sie sicher, dass C # Projekt FULL .NET ausgerichtet ist (NICHT Client Profile).

  2. Fügen Sie Verweise auf Baugruppen in C # Projekt, das von F # Projekt verwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top