Как использовать сборку мусора на сервере с do tnet fsi? - PullRequest
0 голосов
/ 19 июня 2020

Я хотел бы использовать сборку мусора на сервере с do tnet fsi. Как мне это сделать?

Сборку мусора следует настраивать с помощью параметров времени выполнения, указанных в этих двух источниках:

  1. https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet
  2. https://docs.microsoft.com/en-us/dotnet/core/run-time-config/

Я использую windows и предварительный просмотр do tnet 5 sdk. dotnet fsi работает нормально.

Я создал следующий файл fsi.runtimeconfig.json и поместил его в C:\Program Files\dotnet:

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.Server": true
      }
   }
}

Однако, когда я звоню dotnet fsi --runtimeconfig fsi.runtimeconfig.json, я получаю следующую ошибку :

> dotnet fsi --runtimeconfig "fsi.runtimeconfig.json"


error FS0243: Unrecognized option: '--runtimeconfig'

Exception by fsi.exe:
System.Exception: Error creating evaluation session: StopProcessingExn None
   at Microsoft.FSharp.Core.PrintfModule.PrintFormatToStringThenFail@1639.Invoke(String message) in F:\workspace\_work\1\s\src\fsharp\FSharp.Core\printf.fs:line 1639
   at FSharp.Compiler.Interactive.Shell.FsiCommandLineOptions..ctor(FsiEvaluationSessionHostConfig fsi, String[] argv, TcConfigBuilder tcConfigB, FsiConsoleOutput fsiConsoleOutput) in F:\workspace\_work\1\s\src\fsharp\fsi\fsi.fs:line 726
   at FSharp.Compiler.Interactive.Shell.FsiEvaluationSession..ctor(FsiEvaluationSessionHostConfig fsi, String[] argv, TextReader inReader, TextWriter outWriter, TextWriter errorWriter, Boolean fsiCollectible, FSharpOption`1 legacyReferenceResolver) in F:\workspace\_work\1\s\src\fsharp\fsi\fsi.fs:line 2484
   at FSharp.Compiler.Interactive.Shell.FsiEvaluationSession.Create(FsiEvaluationSessionHostConfig fsiConfig, String[] argv, TextReader inReader, TextWriter outWriter, TextWriter errorWriter, FSharpOption`1 collectible, FSharpOption`1 legacyReferenceResolver) in F:\workspace\_work\1\s\src\fsharp\fsi\fsi.fs:line 2825
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.get_Value()
   at Sample.FSharp.Compiler.Interactive.Main.evaluateSession(String[] argv) in F:\workspace\_work\1\s\src\fsharp\fsi\fsimain.fs:line 269

Если я опущу параметр конфигурации времени выполнения, запускается fsi, но System.Runtime.GCSettings.IsServerGC будет false.

1 Ответ

0 голосов
/ 20 июня 2020

Для MacOs / linux: вам нужно изменить do tnet .runtimeconfig. json. Находится в последней версии do tnet SDK, например / usr / local / share / dotnet / sdk / 3.1.301 .

Для Windows: вам нужно изменить fsi.runtimeconfig. json, который находится в папке Fsharp для последней версии SDK, например C: \ Program Files \ dotnet \ sdk \ 5.0.100-preview.4.20258.7 \ FSharp

{
  "runtimeOptions": {
    "tfm": "netcoreapp3.1",
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "3.1.5"
    },
    "configProperties": {
      "System.GC.Server": true
   }
  }
}

до tnet фси

> System.Runtime.GCSettings.IsServerGC;;
val it : bool = true
...