Почему провайдер типа R выдает исключение, если его нет в аналогичной установке? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть два компьютера с, казалось бы, одинаковым кодом и конфигурациями, один компилирует решение, другой нет.

Проблема связана с 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

1 Ответ

0 голосов
/ 12 июля 2018

У меня была такая же проблема.Решил это путем понижения с R v3.5.0 до 3.4.4.

...