我有一个.NET标准库,如下所示:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace process_library
{
public class ProcessHandler
{
public ProcessHandler()
{
}
[MTAThread]
public Process[] GetProcesses()
{
return Process.GetProcesses();
}
}
}
然后我有一个Template10项目,所有.net核心内容都更新到最新版本(需要它来构建)并引用我的库。这一切都有效。
在我的主视图模型中,我实例化了我的库类
ProcessHandler p = new ProcessHandler();
这也是成功的。
我的问题是,当我调用我的get process方法时,它会发出错误并抛出错误 GenericParameterAttributes ='((System.RuntimeType)type).GenericParameterAttributes'抛出类型' System.InvalidOperationException'
的例外有什么方法可以让它发挥作用吗?
UPDATE 删除了所有Template10的东西,因为它往往掩盖真正的错误,并尝试了一个空白的UWP应用程序。获得此异常
System.PlatformNotSupportedException
HResult=0x80131539
Message=Retrieving information about local processes is not supported on this platform.
如果你甚至无法使用它,那么将它包含在.net标准中是什么意思(它应该包含一套你可以使用的标准apis)
我还应该注意到我定位了最新的更新(2018年春季)
答案 0 :(得分:0)
表单official document,当您定位应用或库中的框架时,您需要指定一组您希望可用的API应用程序或库。您可以使用Target Framework Monikers(TFM)在项目文件中指定目标框架。
指定多个目标框架时,可以有条件地引用每个目标框架的程序集。在您的代码中,您可以通过使用if-then-else逻辑
的预处理程序符号来有条件地编译这些程序集
public class MyClass
{
static void Main()
{
#if NET40
Console.WriteLine("Target framework: .NET Framework 4.0");
#elif NET45
Console.WriteLine("Target framework: .NET Framework 4.5");
#else
Console.WriteLine("Target framework: .NET Standard 1.4");
#endif
}
}
ProcessHandler
在UWP中不支持。总之,apis必须可用于平台。