Monogame - SharpDX in MonoGame nutzen

  • VB.NET
  • .NET 4.5

    Monogame - SharpDX in MonoGame nutzen

    Hallo meine lieben Freunde,

    ich arbeite zurzeit an einem 2D-Plattformer in Monogame und habe ein Problem:
    Aus Kompatiblitätsgründen war es mein Ziel sowohl XInput als auch DirectInput zu unterstützen(es ist einfach ein befriedigendes Gefühl ein Spiel auf einem Billo-Controller vom Lidl zu spielen, welcher nur DirectInput supportet :D )
    Da MonoGame nur XInput nativ unterstützt, habe ich bis jetzt SharpDX verwendet um Direct Input kompatibel zu sein. Nun bin ich allerdings an einem Punkt angelangt, an welchem ich ein Video abspielen möchte.

    Wenn ich nun aber ein Video über die ContentPipeline laden möchte, wirft er mir eine TypeLoadException:
    Spoiler anzeigen

    System.TypeLoadException
    HResult=0x80131522
    Nachricht = Der Typ "System.Reflection.SharpDXTypeExtensions" in der Assembly "SharpDX, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1" konnte nicht geladen werden.
    Quelle = SharpDX.MediaFoundation
    Stapelüberwachung:
    bei SharpDX.MediaFoundation.MediaAttributes.Set[T](Guid guidKey, T value)
    bei Microsoft.Xna.Framework.Media.Video.PlatformInitialize()
    bei Microsoft.Xna.Framework.Content.VideoReader.Read(ContentReader input, Video existingInstance)
    bei Microsoft.Xna.Framework.Content.ContentTypeReader`1.Read(ContentReader input, Object existingInstance)
    bei Microsoft.Xna.Framework.Content.ContentReader.InnerReadObject[T](T existingInstance)
    bei Microsoft.Xna.Framework.Content.ContentReader.ReadObject[T]()
    bei Microsoft.Xna.Framework.Content.ContentReader.ReadAsset[T]()
    bei Microsoft.Xna.Framework.Content.ContentManager.ReadAsset[T](String assetName, Action`1 recordDisposableObject)
    bei Microsoft.Xna.Framework.Content.ContentManager.Load[T](String assetName)
    bei Emmond.IG.VidPlayer.LoadContent() in C:\Users\Creme\Desktop\Luminous Friends\Beacon\Beacon\HUD\VideoPlayer.vb: Zeile22
    bei Emmond.Emmond.LoadContent() in C:\Users\Creme\Desktop\Luminous Friends\Beacon\Beacon\Emmond.vb: Zeile157
    bei Microsoft.Xna.Framework.Game.Initialize()
    bei Emmond.Emmond.Initialize() in C:\Users\Creme\Desktop\Luminous Friends\Beacon\Beacon\Emmond.vb: Zeile102
    bei Microsoft.Xna.Framework.Game.DoInitialize()
    bei Microsoft.Xna.Framework.Game.Run(GameRunBehavior runBehavior)
    bei Microsoft.Xna.Framework.Game.Run()
    bei Emmond.Program.Main() in C:\Users\Creme\Desktop\Luminous Friends\Beacon\Beacon\Program.vb: Zeile51



    Ich vermute, dass es daran liegt, dass die SharpDX-Version, welche von Monogame verwendet wird und diejenige, welche ich per NuGet hinzugefügt habe, in Konflikt geraten.
    Was kann ich tun? Gibt es noch eine andere Möglichkeit auf DirectInput zuzugreifen? Oder soll ich den DirectInput-Support ganz lassen?

    Grüße,
    Mircosofter2206

    PS: Wenn ich die Reference auf SharpDX rauswerfe, lädt das Video ohne Probleme

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Mircosofter2206“ ()