2016-06-06 9 views
3

Я пытаюсь использовать библиотеку диаграмм FSharp из командлета powershell (также написанный в F #), но я получаю MissingMethodException для GenericChart.Метод не найден: GenericChart при использовании FSharp.Charting from powershell cmdlet

Образец кода графиков:

open FSharp.Charting 
let testchart() = 
    let foo = DataAccessLayer.GetTestData() 
    Chart.Line(foo) |> Chart.Show 

Функция testchart вызывается из метода ProcessRecord() на производном классе PSCmdlet. Оба кода диаграмм и командлетов находятся в одном и том же решении, хотя разные проекты. Решение компилируется без ошибок. Код диаграммы работает в интерактивном режиме без ошибок. Но когда я пытаюсь выполнить командлет powershell, я получаю исключение исключаемого метода. Это происходит при использовании VS2013 и VS2015.

Согласно документации GenericChart должно быть в файле FSharp.Charting.dll. Я подтвердил, что dll находится в том же каталоге, что и код модуля powershell.

Опять же, в VS все работы intellisense, все компилируется и работает в интерактивном режиме.

Любые предложения очень ценятся.

+1

Исключительное исключение метода - это общая проблема, регулярно встречающаяся здесь, в теге F #. Он настолько популярен, что имеет свой собственный [tag] (http://stackoverflow.com/questions/tagged/missingmethodexception). Вы искали предыдущий пост? Если да, то что вы попробовали что-либо помимо обеспечения его работы с F # Interactive, но не 'cmdlet'? –

+0

Возможный дубликат: [Почему я получаю MissingMethodException при вызове кода F # из PowerShell?] (Http://stackoverflow.com/questions/33696325/why-am-i-getting-a-missingmethodexception-when-calling-f- code-from-powershell) –

+0

@Coder, предыдущее сообщение вызывало функцию непосредственно из powershell (т. е. вызывает f # из кода powershell). Я вызываю F # из кода F #, размещенного в среде powershell. Я не думал, что это одно и то же, хотя, возможно, это имеет ту же причину? – eknutsen

ответ

0

Эта проблема связана с наличием устаревшей копии библиотек. Перестройте с нуля, используя последние библиотеки F #, и он очистится.

У меня было точно такое же сообщение об ошибке, и это было исправлено.