Farseer Physics Engine - projekt się nie buduje

0

Cześć!

Jakiś czas temu naszła mnie myśl, aby napisać coś grywalnego - co właśnie czynie. Mam jednak problem z zaprzątnięciem silnika Farseer do współpracy. Paczkę z silnikiem pobrałem z: http://farseerphysics.codeplex.com/, uruchomiłem solucję dla MonoGame i wczytały mi się poprawnie 3 projekty - bez błędów, brak czerwieni. Błąd dopiero pojawia się przy kompilacji, otóż sam projekt "Farseer Physics Engine" nie chce się skompilować. Zwraca błąd, a właściwie to setki błędów praktycznie w każdym z plików:

The type or namespace name 'Xna' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) Farseer Physics MonoGame D:\Projekty\Farseer Physics Engine 3.5 Samples\Farseer Physics Engine 3.5\Collision\Shapes\ChainShape.cs

Nic wielkiego - pomyślałem - dodać referencje i zadziała. No i tutaj jest problem bo referencję do Microsoft.Xna.Framework są, Microsoft.Xna są niewykorzystywane (zaznaczone na szaro i podpowiedzią aby usunąć) i za bardzo nie wiem co tutaj może być nie tak. Co ciekawe, jak po nieudanej kompilacji wejdę do któregoś z podkreślonych na czerwono plików .cs to magicznie czerwień znika i plik "jest poprawny".

Jakieś sugestie? Na stronie silnika również zadałem pytanie - jak na razie bez odpowiedzi.

Środowisko: VisualStudio 2015
MonoGame zainstalowany, działa poprawnie.

0

Może niezgodność wersji .NET Frameworka? Referencje nie mają małych znaków ostrzeżeń?

0

Ostrzeżeń przy referencjach nie mam, ale za to poszedłem za Twoim kierunkiem i zmieniłem targen najpierw z 4.0 na 3.5 - nie zadziałało, a wręcz było gorzej, oraz z 4.0 na 4.5 - tutaj już jest mam nadziej światełko w tunelu. Nie mam już setek błędów a 4 o treści:

Error CS0433 The type 'FileMode' exists in both 'MonoGame.Framework, Version=3.5.0.1678, Culture=neutral, PublicKeyToken=null' and 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' Farseer Physics MonoGame D:\Projekty\Farseer Physics Engine 3.5 Samples\Farseer Physics Engine 3.5\Common\Serialization.cs

Występuję on m.in w we fragmencie:

        public XMLFragmentParser(string fileName)
        {
            using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
                Load(fs);
        }

Zarówno enum FileMode jak i enum FileAccess podkreślone jest na czerwono z w/w błędem. W jaki sposób mogę "narzucić" korzystanie z konkretnej biblioteki?

0

Namespace dodaj.

0

No niestety nie zadziałało - Ani System.IO.FileMode.Open, ani poprzez alias na usingu więc lipa. Ale... skoro nie można drzwiami to trzeba oknem. Stworzyłem oddzielny projekt SystemIOHelper z klasą Helper, w której to mam potrzebnego enuma:

 public enum FileModeType
 {
       CreateNew = 1,
       Create = 2,
       Open = 3,
       OpenOrCreate = 4,
       Truncate = 5,
       Append = 6
 }

oraz metodę:

 public static FileMode FileMode(FileModeType type)
        {
            switch (type)
            {
                case FileModeType.CreateNew:
                    return System.IO.FileMode.CreateNew;
                case FileModeType.Create:
                    return System.IO.FileMode.Create;
                case FileModeType.Open:
                    return System.IO.FileMode.Open;
                case FileModeType.OpenOrCreate:
                    return System.IO.FileMode.OpenOrCreate;
                case FileModeType.Truncate:
                    return System.IO.FileMode.Truncate;
                case FileModeType.Append:
                    return System.IO.FileMode.Append;

            }

            throw new Exception("Nieobslugiwany typ");
        }

Wystarczyło tylko w kodzie gdzie zwraca błąd odwołać się do w/w metody i ładnie się kompiluje. Oby znów coś się nie skrzaczyło ;)

Dzięki za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1