В исполняемом файле F#, предназначенном для .NET Framework 4.6.2, файл XML загружается, изменяется и затем сохраняется обратно на диск через System.Xml.Linq:
let doc = XDocument.Load apiDoc
...file is modified....
doc.Save apiDoc
После переноса проекта из Visual Studio 2015 в Forge/FAKE/IonIDE с помощью:
- окна SDK-10.0 10.0.26624
- визуалфшарптулс 4.0
- инструменты для сборки Microsoft 15.0.26228.0
- визуальный код студии 1.11.2
Встречается следующая ошибка:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or
assembly 'System.Core, Version=3.5.0.0, Culture=neutral,
PublicKeyToken=null' or one of its dependencies. The system cannot find the
file specified.
at System.Xml.Linq.XText.WriteTo(XmlWriter writer)
at System.Xml.Linq.XElement.WriteTo(XmlWriter writer)
at System.Xml.Linq.XElement.WriteTo(XmlWriter writer)
at System.Xml.Linq.XElement.WriteTo(XmlWriter writer)
at System.Xml.Linq.XDocument.WriteTo(XmlWriter writer)
at System.Xml.Linq.XDocument.Save(XmlWriter writer)
at System.Xml.Linq.XDocument.Save(String fileName, SaveOptions options)
at System.Xml.Linq.XDocument.Save(String fileName)
at Migrate.main(String[] argv) in c:\Projects\Migration\src\app\Migration\Migrate.fs:line 133
Я попытался добавить следующее перед загрузкой документа с той же ошибкой:
Assembly.Load("System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") |> ignore
Примечания:
- Версии Framework 3.5 и 4.5.2–4.7 устанавливаются на компьютере для разработки под управлением Windows 10.
- Идентичное поведение происходит на сервере Windows 2012 R2 с установленными версиями Framework 3.5 и 4.5.2–4.6.2.
- FSharp.Core.dll распространяется вместе с исполняемым файлом.
Это меня смущает, так как 4.6.2 не имеет зависимости от 3.5, а ожидаемая ссылка, указанная в ошибке, не имеет строгого имени.