F # declarou namespace não está disponível no projeto c # ou visível através do navegador do objeto

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

  •  03-07-2019
  •  | 
  •  

Pergunta

F # declarou namespace não está disponível no projeto c # ou visível através do navegador do objeto.

Eu construí um projeto normal, F # biblioteca, mas mesmo depois de eu construir o projeto e referenciá-lo ao meu projeto C #, eu sou incapaz de acessar o namespace desejado.

Eu também sou incapaz de vê-lo no navegador de objeto, eu recebo um erro dizendo que ele não foi construído. Estou executando sobre a libertação setembro lata alguém ponto o meu erro?

F # Versão 1.9.6.0

(6) Edit: referência à dll directamente fixou o meu problema, referenciando o projeto me permite compilar mas o intellisence não funciona. Quando a dll está diretamente referenciada a intellisence funciona perfeitamente.


Este é o código encontrado no arquivo .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:? Poderia ReSharper 4.0 ser o problema

(4) Editar: Quando eu digo o navegador objeto é incapaz de ler o que resulta montagem, eu quero dizer que quando eu tento abrir a montagem no navegador do objeto eu recebo um erro dizendo-me o projeto ainda não foi construído. mais uma vez eu posso ler a montagem usando reflector.

(3) Edit:. Refletor pode desmontar a dll mas o localizador de objectos não é capaz de lê-lo

(2) Edit: eu atualizei meu # versão F para 1.9.6.2 e ainda a mesma conseqüência

(1) Edit: eu era capaz de desmontar o dll de C # eu recebo: (Tudo parece estar bem aqui)

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

Solução

E se você faz referência a DLL produzido diretamente (ou seja, não através de uma referência de projeto, mas por meio de uma referência de arquivo)?

Outras dicas

Talvez IntelliSense está apenas confuso? O compilador de erro que você ganha quando você tentar usá-lo em C #? Quando você diz "o navegador objeto é incapaz de lê-lo" o que isso significa?

Por que vale a pena, eu adicionei este para um projeto # biblioteca F, referenciados ele (projeto) a partir de um aplicativo C # console, e foi capaz de usá-lo. IntelliSense não se exercitar no primeiro embora. (Tive que reconstruir.)

Se você pode fazer uma repro sólida, eu sugiro enviando-a F # erros Alias ??(fsbugs).

Eu tentei a mesma coisa. É como se o Visual Studio e ReSharper 4.0 não entende F # por algum motivo. Se você ignorar o mar de texto vermelho e a falta de intellisense, ele irá compilar bem.

Tente

  1. Certifique-se de que C projeto # é direcionado CHEIA .NET (NÃO Client Profile).

  2. Adicionar referências aos conjuntos em projecto C # os quais são utilizados pelo projecto F #.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top