C# RLNET/OPENTK System.MissingMethodException во время выполнения

Я пытаюсь сделать небольшую 2D-игру на С#, используя библиотеку RLNET. Библиотека RLNET имеет OpenTK в качестве зависимости, поэтому я добавил в свой проект последние версии RLNET и OpenTK с помощью диспетчера пакетов NuGet в Visual Studio. Я следил за учебником, объясняющим, как работать с этими библиотеками. Но когда я начал запускать код, я столкнулся с MissingMethodException во время выполнения.

Учебное пособие, которому я следовал, находится здесь: https://roguesharp.wordpress.com/2016/03/02/roguesharp-v3-tutorial-creating-the-project/

Обозреватель решений показывает обе библиотеки, включенные в проект, в раскрывающемся списке «Ссылки». И я также включил их в свой код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RLNET;
using OpenTK;

namespace Rouge_Game
{
    class Program
    {
        private static readonly int _screenWidth = 100;
        private static readonly int _screenHeight = 70;

        private static RLRootConsole _rootConsole;

        static void Main(string[] args)
        {
            // This must be the exact name of the bitmap font file we are using or it will error.
            string fontFileName = "terminal8x8.png";
            // The title will appear at the top of the console window
            string consoleTitle = "RougeSharp V3 Tutorial - Level 1";
            // Tell RLNet to use the bitmap font that we specified and that each tile is 8 x 8 pixels
            _rootConsole = new RLRootConsole(fontFileName, _screenWidth, _screenHeight,
          8, 8, 1f, consoleTitle);
            // Set up a handler for RLNET's Update event
            _rootConsole.Update += OnRootConsoleUpdate;
            // Set up a handler for RLNET's Render event
            _rootConsole.Render += OnRootConsoleRender;
            // Begin RLNET's game loop
            _rootConsole.Run();
        }

        // Event handler for RLNET's Update event
        private static void OnRootConsoleUpdate(object sender, UpdateEventArgs e)
        {
            _rootConsole.Print(10, 10, "It worked!", RLColor.White);
        }

        // Event handler for RLNET's Render event
        private static void OnRootConsoleRender(object sender, UpdateEventArgs e)
        {
            // Tell RLNET to draw the console that we set
            _rootConsole.Draw();
        }
    }
}

Часть кода, которая имеет ошибку времени выполнения, такова:

    // Event handler for RLNET's Render event
        private static void OnRootConsoleRender(object sender, UpdateEventArgs e)
        {
            // Tell RLNET to draw the console that we set
            _rootConsole.Draw();
        }

Когда я запускаю проект, он компилируется без ошибок, и программа запускается, но затем выдает это исключение:

System.MissingMethodException
  HResult=0x80131513
  Message=Method not found: 'Void 
OpenTK.Graphics.OpenGL.GL.BlendFunc(OpenTK.Graphics.OpenGL.BlendingFactorSrc, OpenTK.Graphics.OpenGL.BlendingFactorDest)'.
  Source=RLNET
  StackTrace:
   at RLNET.RLRootConsole.Draw()
   at Rouge_Game.Program.OnRootConsoleRender(Object sender, UpdateEventArgs e) in C:\Users\pjmul\source\repos\Rouge Game\Rouge Game\Program.cs:line 45
   at RLNET.RLRootConsole.window_RenderFrame(Object sender, FrameEventArgs e)
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at OpenTK.GameWindow.OnRenderFrame(FrameEventArgs e)
   at OpenTK.GameWindow.RaiseRenderFrame(Double elapsed, Double& timestamp)
   at OpenTK.GameWindow.DispatchRenderFrame()
   at OpenTK.GameWindow.Run(Double updates_per_second, Double frames_per_second)
   at OpenTK.GameWindow.Run(Double updateRate)
   at RLNET.RLRootConsole.Run(Double fps)
   at Rouge_Game.Program.Main(String[] args) in 
C:\Users\pjmul\source\repos\Rouge Game\Rouge Game\Program.cs:line 32

Однако я не понимаю эту ошибку, поскольку, когда я использую средство просмотра объектов, встроенное в Visual Studio, я могу найти «отсутствующую» функцию при открытии OpenTK.dll. Любые предложения относительно того, как я могу исправить эту ошибку, очень ценятся. Я также хотел бы заранее поблагодарить всех, кто найдет время, чтобы помочь мне.


person Patrick Mullin    schedule 22.05.2018    source источник


Ответы (1)


Что-то не так с веткой 3.x OpenTK. Попробуйте понизить версию вашего пакета OpenTK до версии 2.x, и это сработает.

person Bil Simser    schedule 29.07.2018