El espacio de nombres declarado de F # no está disponible en el proyecto de c # o es visible a través del buscador de objetos

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

  •  03-07-2019
  •  | 
  •  

Pregunta

El espacio de nombres declarado de F # no está disponible en el proyecto c # o está visible a través del navegador de objetos.

He creado un proyecto de biblioteca F # normal, pero incluso después de que compilo el proyecto y hago referencia a mi proyecto C #, no puedo acceder al espacio de nombres deseado.

Tampoco puedo verlo en el navegador de objetos, aparece un error que indica que no se ha creado. Me postulo para el lanzamiento de septiembre, ¿alguien puede señalar mi error?

F # Versión 1.9.6.0

(6) Edit: Hacer referencia a la dll directamente solucionó mi problema, al hacer referencia al proyecto me permite compilar pero la inteligencia no funciona. Cuando se hace referencia directa a la dll, la inteligencia funciona perfectamente.


Este es el código que se encuentra en el archivo .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) Edit: ¿Podría ReSharper 4.0 ser el problema?

(4) Editar: Cuando digo que el navegador de Objetos no puede leer el ensamblaje resultante, quiero decir que cuando intento abrir el ensamblaje en el navegador de objetos obtengo un error que me dice que el proyecto aún no se ha construido. Una vez más, puedo leer el ensamblaje utilizando el reflector.

(3) Editar: Reflector puede desensamblar la dll pero el Examinador de objetos no puede leerla.

(2) Edit: He actualizado mi versión F # a 1.9.6.2 y aún tengo la misma consecuencia

(1) Edit: Pude desmontar la dll a C #. Obtengo: (todo parece estar bien aquí)

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);
    }
}
¿Fue útil?

Solución

¿Qué sucede si hace referencia a la DLL producida directamente (es decir, no a través de una referencia de proyecto, sino a través de una referencia de archivo)?

Otros consejos

¿Quizás IntelliSense está en mal estado? ¿Qué error de compilador obtienes cuando intentas usarlo en C #? Cuando dices " el navegador de objetos no puede leerlo " ¿Qué significa eso?

Para su valor, lo agregué a un proyecto de la biblioteca F #, hice referencia a él (proyecto) desde una aplicación de consola de C # y pude usarlo. Sin embargo, IntelliSense no funcionó al principio. (Tuvo que reconstruir.)

Si puedes hacer un repro sólido, sugeriría enviarlo por correo electrónico al alias de F # bugs (fsbugs).

Intenté lo mismo. Parece que Visual Studio y Resharper 4.0 no entienden F # por alguna razón. Si ignora el mar de texto rojo y la falta de inteligencia, se compilará bien.

Probar

  1. Asegúrese de que el proyecto de C # esté orientado como FULL .NET (NO es el perfil del cliente).

  2. Agregue referencias a los ensamblados en el proyecto C # que son utilizados por F # project.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top