为什么我得到System.NullReferenceException在我的c#脚本,而我的执行相同的代码是工作吗?&l



我有以下。csx脚本:

#r "C:WindowsMicrosoft.NETassemblyGAC_MSILSystem.Managementv4.0_4.0.0.0__b03f5f7f11d50a3aSystem.Management.dll"
using System.Management;
ManagementClass cls = new ManagementClass("\\.\root\default:StdRegProv");

当我使用dotnet script运行此命令时我得到这个错误:

System.NullReferenceException: Object reference not set to an instance of an object.
at System.Management.MTAHelper.IsNoContextMTA()
at System.Management.MTAHelper.CreateInMTA(Type type)
at System.Management.ManagementPath.CreateWbemPath(String path)
at System.Management.ManagementPath..ctor(String path)
at System.Management.ManagementClass..ctor(String path)
at Submission#0.<<Initialize>>d__0.MoveNext() in <..path..>script.csx:line 3
--- End of stack trace from previous location ---
at Dotnet.Script.Core.ScriptRunner.Execute[TReturn](String dllPath, IEnumerable`1 commandLineArgs) in <...path...>TemptmpBFBDotnet.Script.CoreScriptRunner.cs:line 110

如果我在visual studio中编译以下代码,一切正常:

using System.Management;
class Script {
static void Main() {
ManagementClass cls = new ManagementClass("\\.\root\default:StdRegProv");
}
}

为什么?如何让我的。csx脚本工作?

。net脚本在。net Core上运行,我不认为WMI在。net Core上工作,因为它需要COM互操作。看到这个。

此外,. net CORE的全局运行时dll不是在GAC中,而是在运行时包存储库中。