Обычно это проблема привязки, а не проблема структуры. 4.3 - более старая версия.
Скорее всего, версия 4.3 установлена в GA C сервера. Менее вероятно, что каталог bin содержит неправильную версию F #, но вызывающий ошибку метод не вызывается в системе Win10. Проверьте выходной каталог и GA C для версий FSharp.Core.dll
, если они верны, проверьте BindingRedirect
в app.config
.
Если это не помогает найти местоположение и версию неправильно связанная dll, в качестве альтернативы, выгрузите версию сборки Core с typeof<option>.Assembly.GetName().Version
как одну из самых ранних в вашем коде (используйте Console.WriteLine
, а не printfn
). Вы также можете выгрузить фактический путь к расположению сборки таким образом.
Обычно это происходит потому, что ваш код компилируется с библиотекой, которая сама скомпилирована для более старой версии FSharp.Core (например, для экземпляр FParse c, это обычная проблема с этой библиотекой). У меня были случаи, когда затем развертывалась неправильная сборка или правильная, но без BindingRedirect
она все равно терпела неудачу.
Если вы хотите знать, какая связанная сборка является виновником, у вас будет чтобы проверить для каждого из них, с какой версией F # они были скомпилированы. Такой инструмент, как Reflector, может помочь. Если вы хотите глубже изучить разрешение загрузки сборки, вы можете использовать инструмент fuslogvw.exe
для регистрации событий привязки в реальном времени.
Кстати, вы можете получить текущую версию фреймворка, который вы используете в с System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription