2

我正在尝试使用 c# 和 Cosmos 构建一个小型操作系统。首先,
这一切都很好,只是从一个时刻到另一个它停止工作并给了我以下错误:

调用 NAsm 时发生错误。
OSBoot.asm Line: 241424 Code: push dword System_Void__System_IO_Stream_Dispose__
OSBoot.asm Line: 242633 Code: push dword System_Void__System_IO_Stream_Dispose__ t OSBoot.asm Line: 247640 Code: push dword System_Void__System_IO_Stream_Dispose__
OSBoot.asm Line: 248618 Code: push dword System_Void__System_Collections_Generic_List_1_Enumerator__Commands_ICommand_ICommandBase_ Dispose _

我什至在新系统上安装了带有 cosmos 的 Microsoft Visual Studio 的新安装并从头开始,起初它可以工作,但再次没有任何问题它停止工作

using System;
using Commands;
using Sys = Cosmos.System;

namespace OS
{
public class Kernel : Sys.Kernel
{
    private Env SysEnv { get; set; }
    private InputHandeler InputHandler { get; set; }


    protected override void BeforeRun()
    {
        Console.WriteLine("Creating Enviriment...");
        SysEnv = new Env();
        InputHandler = new InputHandeler(new CommandLister());
        Console.WriteLine("Enviriment build");
        Console.Clear();
        Console.WriteLine("Os booted successfully.");
    }

    protected override void Run()
    {
        Console.Write(SysEnv.ConsolCommandPrefix);
        var input = Console.ReadLine();
        try
        {
            InputHandler.ExecuteInput(input);
        } catch(Exception)
        {
            //TODO good exeption and the use of it
        }
    }
}
}

环境类

namespace OS
{
public class Env
{
    public string CurrentUser { get; set; }
    public string CurrnetDir { get; set; }
    private string prefix;
    public string ConsolCommandPrefix
    {
        get { return CurrentUser + "@" + CurrnetDir + prefix; }
        set { prefix = value; }
    }

    public Env()
    {
        ConsolCommandPrefix = "> ";
        CurrentUser = "Admin";
        CurrnetDir = "/";
    }
}
}

CommandLister 类

using System;
using System.Collections.Generic;
using Commands.Command;
using Commands.Command.SystemCommands;
using Commands.ICommand;

namespace Commands
{
public class CommandLister
{
    private List<ICommandBase> KnownCommands { get; set; }
    private Unkown UnkownCommand { get; set; }

    public CommandLister()
    {
        KnownCommands = new List<ICommandBase>();
        addCommand(new Help());
        UnkownCommand = new Unkown();
    }

    public void addCommand(ICommandBase command)
    {
        KnownCommands.Add(command);
    }

    public ICommandBase getCommand(String input)
    {
        foreach (var command in KnownCommands)
        {
            if(true)
            {
                return command;
            }
        }
        return UnkownCommand;
    }

}
}

其他类只包含一些文本,并且只向控制台打印一些内容

我有两个问题: - 是什么原因造成的 - 我该如何解决这个问题

编辑:我在另一个操作系统上再次尝试了它(我第一次使用 vista),这次我使用的是 Windows 7。同样的事情一开始就发生了(我又从头开始了..)但经过几次构建和运行它不知何故又坏了。即使撤消我所做的更改。它不会再建立了。

亲切的问候,

江户邮筒

4

0 回答 0