У меня есть два компьютера с, казалось бы, одинаковым кодом и конфигурациями, один компилирует решение, другой нет.
Проблема связана с R Type Provider
.
Это код:
/// Path to project data folder.
[<Literal>]
let projDataPath = __SOURCE_DIRECTORY__ + @"\data\"
[<Literal>]
let jsonPath = projDataPath + "fractal.json"
type PathInfo = JsonProvider<Sample=jsonPath>
/// Csv provider for files with information about assets
type AssetsInfo = CsvProvider<Sample="AssetInfoFS.csv", // must be a Literal
HasHeaders=true,
ResolutionFolder=projDataPath,
AssumeMissingValues=false,
CacheRows=false>
[<Literal>]
let configPath = projDataPath + "config.json"
type Cnfg = JsonProvider<Sample=configPath>
На обоих компьютерах работает Windows 10
, на одном из которых код не компилируется, работает версия Home
, на другом -Pro
версия.
На обоих компьютерах установлено Visual Studio Community 2017 Version 15.7.2
.
Конфигурация
Приложение:
Целевая среда F #: 4.4.3.0
Целевая структура: .NET Framework 4.6.1
Тип вывода: Console Application
Сборка:
Платформа Цель: Any CPU
Другие флаги: Prefer 32-bit
Установленные пакеты:
R.NET Community v1.65
R.NET Community,FSharp v1.65
RProvider v1.1.2.0
R версия:
Пробовал с R 3.4.3
и R 3.5.0
, в обоих случаях 32-Битовые и 64-битные версии были установлены.
Сообщение об ошибке:
parse error FS3053: error : The type provider constructor has thrown an exception: Initialization of R.NET failed
1>FSC: warning FS3005: Referenced assembly 'C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\RProvider.dll' has assembly level attribute 'Microsoft.FSharp.Core.CompilerServices.TypeProviderAssemblyAttribute' but no public type provider classes were found
1>Done building project "Fractal13.fsproj" -- FAILED.
В Интернете и в SO были некоторые старые вопросы, связанные с этим, но не яснорешение.Любые предложения по решению этой проблемы?
РЕДАКТИРОВАТЬ:
Следуя предложению Томаса Петричека в комментарии, я получил следующий журнал:
[5/26/2018 7:45:20 AM] [Pid:12476, Tid:44, Apid:1] initAndGenerate: starting
[5/26/2018 7:45:20 AM] [Pid:12476, Tid:44, Apid:1] Starting server 'C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\RProvider.Server.exe' with arguments 'RInteropServer_12476_457625_1311358896 "C:\Users\fsald\AppData\Local\Temp\tmpFB99.tmp"' (exists=true)
[5/26/2018 7:45:20 AM] [Pid:4948, Tid:1, Apid:1] Starting 'RProvider.Server' with arguments '[|"RInteropServer_12476_457625_1311358896";
"C:\Users\fsald\AppData\Local\Temp\tmpFB99.tmp"|]'
[5/26/2018 7:45:20 AM] [Pid:4948, Tid:1, Apid:1] Registering RInteropServer at channel 'RInteropServer_12476_457625_1311358896'
[5/26/2018 7:45:20 AM] [Pid:4948, Tid:1, Apid:1] Ready for connections..
[5/26/2018 7:45:20 AM] [Pid:4948, Tid:1, Apid:1] Attempting resolution for 'RDotNet, Version=1.6.5.0, Culture=neutral, PublicKeyToken=null'
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] Probing locations: C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Accord.3.8.0\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Accord.MachineLearning.3.8.0\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Accord.MachineLearning.GPL.3.8.0\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Accord.Math.3.8.0\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Accord.Statistics.3.8.0\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Deedle.1.2.5\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\DynamicInterop.0.7.4\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\FSharp.Date.0.3\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\MathNet.Numerics.4.4.1\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Newtonsoft.Json.9.0.1\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\numl.0.8.26.0\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\R.NET.Community.1.6.5\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\R.NET.Community.FSharp.1.6.5\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\RProvider.1.1.20\lib\net40
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] Found assembly, checking version! (C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\R.NET.Community.1.6.5\lib\net40\RDotNet.dll)
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] ...version matches, returning!
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] Attempting resolution for 'DynamicInterop, Version=0.7.4.0, Culture=neutral, PublicKeyToken=null'
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] Probing locations: C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Accord.3.8.0\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Accord.MachineLearning.3.8.0\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Accord.MachineLearning.GPL.3.8.0\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Accord.Math.3.8.0\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Accord.Statistics.3.8.0\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Deedle.1.2.5\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\DynamicInterop.0.7.4\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\FSharp.Date.0.3\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\MathNet.Numerics.4.4.1\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\Newtonsoft.Json.9.0.1\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\numl.0.8.26.0\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\R.NET.Community.1.6.5\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\R.NET.Community.FSharp.1.6.5\lib\net40;C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\RProvider.1.1.20\lib\net40
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] Found assembly, checking version! (C:\Projects\bitbucket3\VSProjects\Fractal13\packages\RProvider.1.1.20\lib\net40\..\..\..\DynamicInterop.0.7.4\lib\net40\DynamicInterop.dll)
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] ...version matches, returning!
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] findRHomePath
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] getRLocation
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] Scanning the registry
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] findRHomePath: file='C:\Program Files\R\R-3.5.0\bin\x64\R.dll'
[5/26/2018 7:45:21 AM] [Pid:12476, Tid:44, Apid:1] generateTypes: getting packages
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:5, Apid:1] Adding work item to queue
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] server event loop: got work item
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] eval(.packages(all.available=T))
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] engine: Creating and initializing instance (sizeof<IntPtr>=8)
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] engine: Creating instance failed:
System.NullReferenceException: Object reference not set to an instance of an object.
at RDotNet.SymbolicExpression..ctor(REngine engine, IntPtr pointer)
at RDotNet.ExpressionVector.GetValue(Int32 index)
at RDotNet.ExpressionVector.get_Item(Int32 index)
at RDotNet.Vector`1.<GetEnumerator>d__0.MoveNext()
at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
at RDotNet.REngine.Parse(String statement, StringBuilder incompleteStatement)
at RDotNet.REngine.<Defer>d__0.MoveNext()
at System.Linq.Enumerable.LastOrDefault[TSource](IEnumerable`1 source)
at RDotNet.REngine.Evaluate(String statement)
at RDotNet.REngine.Initialize(StartupParameter parameter, ICharacterDevice device, Boolean setupMainLoop)
at RDotNet.REngine.GetInstance(String dll, Boolean initialize, StartupParameter parameter, ICharacterDevice device)
at RProvider.Internal.RInit.engine@119.Invoke() in C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\RInit.fs:line 126
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] Output:
[5/26/2018 7:45:21 AM] [Pid:4948, Tid:1, Apid:1] Operation failed:
System.Exception: Initialization of R.NET failed ---> System.NullReferenceException: Object reference not set to an instance of an object.
at RDotNet.SymbolicExpression..ctor(REngine engine, IntPtr pointer)
at RDotNet.ExpressionVector.GetValue(Int32 index)
at RDotNet.ExpressionVector.get_Item(Int32 index)
at RDotNet.Vector`1.<GetEnumerator>d__0.MoveNext()
at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
at RDotNet.REngine.Parse(String statement, StringBuilder incompleteStatement)
at RDotNet.REngine.<Defer>d__0.MoveNext()
at System.Linq.Enumerable.LastOrDefault[TSource](IEnumerable`1 source)
at RDotNet.REngine.Evaluate(String statement)
at RDotNet.REngine.Initialize(StartupParameter parameter, ICharacterDevice device, Boolean setupMainLoop)
at RDotNet.REngine.GetInstance(String dll, Boolean initialize, StartupParameter parameter, ICharacterDevice device)
at RProvider.Internal.RInit.engine@119.Invoke() in C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\RInit.fs:line 126
--- End of inner exception stack trace ---
at RProvider.Internal.RInit.engine@119.Invoke() in C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\RInit.fs:line 137
at System.Lazy`1.CreateValue()
at System.Lazy`1.LazyInitValue()
at RProvider.RInteropInternal.eval@292.Invoke(Unit unitVar0) in C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\RInterop.fs:line 293
at RProvider.Internal.Logging.logWithOutput[a](CharacterDeviceInterceptor characterDevice, FSharpFunc`2 f) in C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\Logging.fs:line 57
[5/26/2018 7:45:21 AM] [Pid:12476, Tid:44, Apid:1] RProvider constructor failed: System.Exception: Initialization of R.NET failed ---> System.NullReferenceException: Object reference not set to an instance of an object.
at RDotNet.SymbolicExpression..ctor(REngine engine, IntPtr pointer)
at RDotNet.ExpressionVector.GetValue(Int32 index)
at RDotNet.ExpressionVector.get_Item(Int32 index)
at RDotNet.Vector`1.<GetEnumerator>d__0.MoveNext()
at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
at RDotNet.REngine.Parse(String statement, StringBuilder incompleteStatement)
at RDotNet.REngine.<Defer>d__0.MoveNext()
at System.Linq.Enumerable.LastOrDefault[TSource](IEnumerable`1 source)
at RDotNet.REngine.Evaluate(String statement)
at RDotNet.REngine.Initialize(StartupParameter parameter, ICharacterDevice device, Boolean setupMainLoop)
at RDotNet.REngine.GetInstance(String dll, Boolean initialize, StartupParameter parameter, ICharacterDevice device)
at RProvider.Internal.RInit.engine@119.Invoke() in C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\RInit.fs:line 126
--- End of inner exception stack trace ---
Server stack trace:
at RProvider.Server.EventLoop.runServerCommandSafe[a](FSharpFunc`2 f) in C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\RInteropServer.fs:line 63
at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at RProvider.Internal.IRInteropServer.GetPackages()
at RProvider.RTypeBuilder.generateTypes@26-2.GenerateNext(IEnumerable`1& next) in C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider.DesignTime\RTypeBuilder.fs:line 27
at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.MoveNextImpl()
at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.System-Collections-IEnumerator-MoveNext()
at Microsoft.FSharp.Collections.SeqModule.ToList[T](IEnumerable`1 source)
at RProvider.RTypeBuilder.generateTypes@24-1.GenerateNext(IEnumerable`1& next) in C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider.DesignTime\RTypeBuilder.fs:line 25
at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.MoveNextImpl()
at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.System-Collections-IEnumerator-MoveNext()
at Microsoft.FSharp.Collections.SeqModule.ToList[T](IEnumerable`1 source)
at RProvider.RInteropClient.withServer[a](FSharpFunc`2 f) in C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider.DesignTime\RInteropClient.fs:line 121
at RProvider.RTypeBuilder.initAndGenerate@104.GenerateNext(IEnumerable`1& next) in C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider.DesignTime\RTypeBuilder.fs:line 109
at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.MoveNextImpl()
at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.System-Collections-IEnumerator-MoveNext()
at Microsoft.FSharp.Collections.SeqModule.ToList[T](IEnumerable`1 source)
at RProvider.RProvider.buildTypes() in C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider.DesignTime\RProvider.fs:line 32