运行程序为.exe dll miss match? (找不到方法)

时间:2017-02-08 09:04:11

标签: c# dll windows-runtime

我需要从服务中获取计算机上智能卡的名称。

我有这个程序将所有智能卡的名称写入文件。

using System;
using System.Threading.Tasks;
using Windows.Devices.Enumeration;
using Windows.Devices.SmartCards;

namespace DeviceEnumerationConsoleTest
{
    class Program
    {
        static void Main(string[] args)
        {
            EnumerateDevices().Wait();
        }

        static async Task EnumerateDevices()
        {          
            try
            {
                string selector = SmartCardReader.GetDeviceSelector();              
                DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(selector);
                string ret = "start1 ";
                foreach (DeviceInformation device in devices)
                {
                    ret = ret + device.Name + " _ ";
                }

                System.IO.File.WriteAllText(@"C:\ProgramData\IDNORTH\cards.txt", ret);

            }catch(Exception e)
            {
                System.IO.File.WriteAllText(@"C:\ProgramData\IDNORTH\error.txt", e.Message);
            }
        }
    }
}

当我自己运行它时,这项工作很棒。

然而,当我从外面运行时,它有时会工作,有时会返回

找不到方法:Void System.Threading.Tasks.Task.AddToActiveTasks(System.Threading.Tasks.Task)

来自行:

DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(selector);

我从错误中相信dll存在一些问题。 在项目中,我添加了参考文献。

C:\ Program Files(x86)\ Windows Kits \ 8.1 \ References \ CommonConfiguration \ Neutral \ Windows.winm d

C:\ Program Files(x86)\ Microsoft SDKs \ WindowsPhoneApp \ v8.1 \ Tools \ MDILXAPCompile \ Framework \ Sys tem.Runtime.WindowsR untime.dll

我从服务中调用exe并且没有添加或更改任何引用。它与添加到Project1的窗口引用具有相同的窗口引用。

1 个答案:

答案 0 :(得分:0)

不确定这是否是程序,但我认为我应该将其标记为已回答,因为它现在有效。 将引用更改为C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETCore \ v4.5 \ System.Runtime.WindowsRuntime.dll

感谢默认!