2015-12-11 3 views
0

У меня есть проект библиотеки MyLib, в котором у меня есть пространство имен, называемое Extensions, в котором есть модуль под названием Extension1, который имеет метод под названием ext1Method1 типа string -> string.Почему я получаю System.MissingMethodException при вызове пользовательской библиотеки?

В решении для проекта библиотеки есть проект исполняемой консоли, называемый Test. В пределах Test Я могу позвонить MyLib.Extensions.Extension1.ext1Method1 str, и он отлично работает.

Я создал полностью отдельное решение под названием NewSol1 и включил ссылку MyLib.dll в NewSol1. В NewSol1 есть линия

printfn "%s" (MyLib.Extensions.Extension1.ext1Method1 "Hello, World") 

Решение NewSol1 строит без каких-либо ошибок. Но когда я запускаю исполняемый файл, я получаю следующую ошибку:

System.MissingMethodException was unhandled 

Message: An unhandled exception of type 'System.MissingMethodException' occurred in NewSol1.exe 

Additional information: Method not found: 'Microsoft.FSharp.Collections.FSharpList`1<System.String> MyLib.Extensions.Extension1.ext1Method1(System.String)'. 

Заранее за вашу помощь.

+1

См. Http://stackoverflow.com/q/34134858/636019 – ildjarn

+0

@ildjarn Это решило проблему! Если вы разместите ссылку в качестве ответа, я соглашусь с ней. – Shredderroy

ответ

3

Я оставляю короткий ответ здесь, даже если ссылка, предоставленная ildjarn, отвечает на вопрос: чтобы устранить проблему, убедитесь, что пакеты Nuget в двух решениях одинаковы.

В моем случае библиотека использовала несколько более старую версию FSharp.Core. Поскольку у меня была свобода перекомпилировать библиотеку против любой версии FSharp.Core, я решил обновить все пакеты Nuget как в библиотеке, так и у потребителя. Я сделал это, щелкнув правой кнопкой мыши библиотечное решение, выбрав Manage Nuget Packages for Solution... и убедившись, что все пакеты обновлены.