0

我有一个 .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 进程方法时,它会吐出并抛出错误 GenericParameterAttributes = '((System.RuntimeType)type).GenericParameterAttributes' throwed an exception of type 'System.InvalidOperationException'

有什么办法可以让它工作吗?

更新删除了所有 Template10 的东西,因为它倾向于掩盖真正的错误并尝试了一个空白的 UWP 应用程序。获取此异常

System.PlatformNotSupportedException
  HResult=0x80131539
  Message=Retrieving information about local processes is not supported on this platform.

如果您甚至无法使用它,将其包含在 .net 标准中(应该包含您可以使用的标准 API 集)有什么意义

我还应该注意我的目标是最新的更新(2018 年春季)

4

1 回答 1

0

形成官方文档,当您在应用程序或库中定位框架时,您正在指定您希望为应用程序或库提供的 API。您可以使用目标框架名字对象 (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 中不支持。总之,api必须对平台可用。

于 2018-05-04T08:18:22.057 回答