首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PlatformNotSupportedException解析程序集?

如何使用PlatformNotSupportedException解析程序集?
EN

Stack Overflow用户
提问于 2018-11-12 16:48:16
回答 1查看 7.7K关注 0票数 2

我是一个爱上F#的数学家。然而,.NET程序集给我带来了悲伤。我不明白他们是怎么纠结在一起的。因此,我试图运行一个来自Infer.Net的例子,当我试图将其转换为脚本时,在visual 2017中将其运行到FSI时会遇到以下错误:

代码语言:javascript
复制
Binding session to 'C:\Users\jdks\.nuget\packages\system.codedom\4.4.0\lib\netstandard2.0\System.CodeDom.dll'...
> System.PlatformNotSupportedException: Current platform is not supported by the current compiler choice Auto. Try a different one. ---> System.PlatformNotSupportedException: Operation is not supported on this platform.
   at Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames)
   at Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromFileBatch(CompilerParameters options, String[] fileNames)
   at Microsoft.ML.Probabilistic.Compiler.CodeCompiler.CompileWithCodeDom(List`1 filenames, List`1 sources, ICollection`1 referencedAssemblies)
   at Microsoft.ML.Probabilistic.Compiler.CodeCompiler.Compile(List`1 filenames, List`1 sources, ICollection`1 referencedAssemblies)
   --- End of inner exception stack trace ---
   at Microsoft.ML.Probabilistic.Compiler.CodeCompiler.Compile(List`1 filenames, List`1 sources, ICollection`1 referencedAssemblies)
   at Microsoft.ML.Probabilistic.Compiler.CodeCompiler.WriteAndCompile(List`1 typeDeclarations)
   at Microsoft.ML.Probabilistic.Compiler.ModelCompiler.CompileWithoutParams[T](List`1 itds)
   at Microsoft.ML.Probabilistic.Models.InferenceEngine.Compile()
   at Microsoft.ML.Probabilistic.Models.InferenceEngine.GetCompiledInferenceAlgorithm(Boolean inferOnlySpecifiedVars, IVariable var)
   at Microsoft.ML.Probabilistic.Models.InferenceEngine.Infer[TReturn](IVariable var)
   at <StartupCode$FSI_0003>.$FSI_0003.main@() in C:\Temp\Script1.fsx:line 24
Stopped due to error

下面是剧本:

代码语言:javascript
复制
#r "netstandard.dll"
#r @"C:\Users\jdks\.nuget\packages\system.codedom\4.4.0\lib\netstandard2.0\System.CodeDom.dll"
#r @"C:\Users\jdks\.nuget\packages\microsoft.ml.probabilistic\0.3.1810.501\lib\netstandard2.0\Microsoft.ML.Probabilistic.dll"
#r @"C:\Users\jdks\.nuget\packages\microsoft.ml.probabilistic.compiler\0.3.1810.501\lib\netstandard2.0\Microsoft.ML.Probabilistic.Compiler.dll"
#r @"C:\Users\jdks\.nuget\packages\microsoft.ml.probabilistic.learners\0.3.1810.501\lib\netstandard2.0\Microsoft.ML.Probabilistic.Learners.dll"
#r @"C:\Users\jdks\.nuget\packages\microsoft.ml.probabilistic.visualizers.windows\0.3.1810.501\lib\net461\Microsoft.ML.Probabilistic.Compiler.Visualizers.Windows.dll"
#r @"C:\Users\jdks\Proto\infer-master\src\FSharpWrapper\bin\Debug\netstandard2.0\Microsoft.ML.Probabilistic.FSharp.dll"

open System
open Microsoft.ML.Probabilistic
open Microsoft.ML.Probabilistic.Distributions
open Microsoft.ML.Probabilistic.Models

let firstCoin = Variable.Bernoulli(0.5)  
let secondCoin = Variable.Bernoulli(0.5)
let bothHeads = firstCoin &&& secondCoin
let engine = new InferenceEngine()

// this is the line that fails
let bothHeadsPost = engine.Infer<Bernoulli>(bothHeads)

printfn "Both heads posterior = %A" bothHeadsPost
bothHeads.ObservedValue <- false

正如您所看到的,我已经为Infer.Net使用了nuget包,但是下载了git并编译它以获得FSharpWrapper.dll。因为我可以编译,所以我猜想这个问题是与程序集相关的,但是我还不知道如何解决这个问题。我在这里该怎么办?

相关信息

奖金问题:

它说Binding session to ...是什么意思?我找不到任何好的信息,在专家F# 4.0或在线,它看起来可疑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-12 21:26:38

这有两个原因:

  1. 存储库中有关此包的语句带有一个大星号。.NET标准2.0和.NET Framework4.7或更低版本都存在问题。对于所有的意图和目的,这个包只应该与.NET核心或.NET Framework4.7.1+一起使用;否则,您可能会看到更多的问题。包的作者应该多目标到netstandard2.0net461,这将解决这类问题。
  2. F#互动还没有正确地支持.NET标准组件。这是我们正在做的事情,但这是一个很难解决的问题,我不希望有适当的支持来稳定至少几个月。

我建议将此包与您运行的.NET核心控制台应用程序一起使用(或者手动运行,或者使用dotnet-watch-run工具)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53266631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档