我正在尝试使用https://github.com/EliteAPI/EliteAPI提供的API,并根据上提供的示例创建了一个简单的应用程序。这样做完全符合昨天的预期,直到由于某种原因我的桌面崩溃了,此后,当应用程序尝试创建新的EliteDangerousAPI对象时,该应用程序崩溃并出现NullReferenceException:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using EliteAPI;
using EliteAPI.Events;
namespace Elite_PI_Server
{
class Program
{
private static EliteDangerousAPI EliteAPI;
static void Main(string[] args)
{
DirectoryInfo playerJournalFolder = new DirectoryInfo(
$@"C:\Users\{Environment.UserName}\Saved Games\Frontier
Developments\Elite Dangerous");
EliteAPI = new EliteDangerousAPI( playerJournalFolder );
EliteAPI.Start();
}
}
}
我将代码剥离到了上面,我有一个朋友在他的机器上测试了此代码,并且运行良好。在我提到的崩溃之前,它在我的机器上运行良好。
System.NullReferenceException
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=EliteAPI
StackTrace:
at EliteAPI.Status.StatusWatcher.Update()
at EliteAPI.Status.StatusWatcher..ctor(EliteDangerousAPI api)
at EliteAPI.EliteDangerousAPI.Reset()
at EliteAPI.EliteDangerousAPI..ctor(DirectoryInfo JournalDirectory, Boolean SkipCatchUp)
at Elite_PI_Server.Program.Main(String[] args) in C:\Users\paul\source\repos\Elite-PI-Server-Console\Elite-PI-Server\Program.cs:line 22
作为参考,我正在使用Visual Studio Community Edition 2017 15.9.7。关于我可以尝试的任何建议将不胜感激。
考虑到代码已被证明可以在另一台机器上工作,我尝试了其他一些繁琐的方法,这些方法似乎有些过头了:
我尝试卸载EliteAPI的nuget软件包,清除nuget软件包缓存并重新安装。
我尝试完全重新安装Visual Studio,并使用https://github.com/Microsoft/VisualStudioUninstaller清理安装。
任何建议将不胜感激。我感觉好像是我的机器死机了,或者我正在做一些愚蠢的事情。
答案 0 :(得分:1)
我是EliteAPI的作者。
首先,感谢您使用该库! :)
很抱歉听到您遇到问题。
当API试图从Status.json文件中获取数据时,似乎发生了错误。您可以确认可以在C:\Users\<username>\Saved Games\Frontier Developments\Elite Dangerous
上找到Status.json。另外,您是在开始游戏之前还是之后运行API?
如果有的话,最好与Discord进行进一步联系。这是我们的邀请链接:https://discord.gg/jwpFUPZ。
谢谢!
编辑:尝试在EliteAPI.Logger.Log += (sender, arg) => Console.WriteLine(arg.Message);
上方添加EliteAPI.Start();
,以查看是否发出任何警告。