Adicionei com sucesso algo como C:\corporatelib\internalLib.dll
ao meu projeto F# ConsoleApplication. Tenho certeza de que foi adicionado corretamente, porque consigo ver o autocompletar funcionando, o "open internalLib" funciona e o projeto compila.
No entanto, ao executar o aplicativo, estou enfrentando
Unhandled Exception. FileNotFoundException: Could not load file or assembly 'internalLib, version=<some wierd, wrong version nuber>, culture=neutral, PublicKeyToken=<some hex here>'. The system cannot find the file specified.
Isso não faz sentido para mim, pois o caminho para internalLib.dll
está correto: se eu cometer um erro de digitação em propósitopose no myproject.fsproj
arquivo, perco o preenchimento automático e o projeto não compila.
Também consigo carregar dinamicamente o assembly com System.Reflection
e Assembly.LoadFrom
, mas gostaria de evitar isso.
Eu tentei remover a pasta "bin" dentro da árvore do projeto e reconstruir/reiniciar, sem efeito
Sou completamente novo em .NET.
Conforme seus comentários, sua biblioteca externa tem suas próprias outras dependências , o que causa o erro ao tentar carregar a biblioteca externa principal.
Neste caso, você precisa ter todas as outras dependências presentes no diretório executável , junto com a outra biblioteca externa que você referenciou.
Você pode copiar o manualmente para o
/bin
ou qualquer que seja seu diretório de saída, para fazê-lo funcionar. Claro, queremos uma solução mais robusta.Para copiá-los automaticamente para a saída da sua compilação, você pode escolher a opção A ou B.
Opção A (não recomendada):
Referenciando todas as outras dependências de biblioteca. Isso é de alguma forma tedioso, e não se aplica aqui, pelo que entendi, porque as outras bibliotecas devem ser .NET para que isso funcione. Você pode evitar a parte tediosa de alguma forma criando um script da edição diretamente no arquivo .csproj.
Opção B:
Crie uma pasta de solução ou projeto no Visual Studio e copie as dependências da biblioteca externa aqui (a propósito, você também pode copiar a própria biblioteca externa aqui).
Certifique-se de selecionar a propriedade "
Copy Always
" ou "Copy if newest
" para aCopy to Output Directory
propriedade do item no Visual Studio, dessa forma o Visual Studio irá realmente colocá-los em qualquer diretório de saída /bin/. Isso se torna importante se você configurar um novo ambiente ou criar uma nova configuração de saída (debug / prod...).