2012-07-22 19 views
8

Próbuję skompilować program, który wykorzystuje bibliotekę Newtonsoft.Json.dll z mono poleceńnie można załadować typu System.Runtime.Versioning.TargetFrameWorkAttribute z zespołu

kompilacji

gmcs Program.cs etcetera.cs -r:Newtonsoft.Json.dll -r:Argotic.Core.dll 

Wynik:

Missing method .ctor in assembly Newtonsoft.Json.dll, type System.Runtime.Versioning.TargetFrameworkAttribute 
Can't find custom attr constructor image: Newtonsoft.Json.dll mtoken: 0x0a000053 

A następnie, gdy próbuje uruchomić program (mono Program.exe), zgłasza błąd:

Unhandled Exception: System.TypeLoadException: Could not load type 'System.Runtime.Versioning.TargetFrameworkAttribute' from assembly 'Newtonsoft.Json'. 

    at my_program.CJSONStuff.serialize (System.Collections.Generic.Dictionary`2 obj) [0x00000] in <filename unknown>:0 

    at my_program.TheObjDB.getAllSerialized() [0x00000] in <filename unknown>:0 

    at my_program.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type 'System.Runtime.Versioning.TargetFrameworkAttribute' from assembly 'Newtonsoft.Json'. 

    at my_program.CJSONStuff.serialize (System.Collections.Generic.Dictionary`2 obj) [0x00000] in <filename unknown>:0 

    at my_program.TheObjDB.getAllSerialized() [0x00000] in <filename unknown>:0 

    at my_program.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 

Nigdy wcześniej nie używałam mono i nie mam pojęcia, co się dzieje ... ale może to oznacza, że ​​nie można użyć biblioteki DLL, ponieważ nie została ona również skompilowana z mono? Jeśli o to chodzi; czy to oznacza, że ​​nie mogę używać żadnych plików DLL 3D z mono-stronami, jeśli nie mam również kodu źródłowego?

Odpowiedz

6

Ponieważ domyślne monitory używają środowiska wykonawczego v 2.0, ale nuget używa wersji 4.0. jej może być postanowienie poprzez zdefiniowanie parametru wykonawczego na mono:

mono --runtime=v4.0.30319 NuGet.exe 

Źródło: http://monomvc.wordpress.com/2012/03/06/nuget-on-mono/

+0

Dzięki, że pracował dobrze na Windows! W przypadku niepowiązanej noty, Linux "jest wersją runtime obsługiwaną przez tę aplikację jest niedostępna, używając domyślnego środowiska wykonawczego v1.1.4322", ale to wygląda zupełnie inaczej. Przyjmę odpowiedź, kiedy tylko będę mógł. – natli

+0

Czy sprawdziłeś ten wątek: http://stackoverflow.com/questions/5327672/running-net-4-application-with-mono – Tarik

+0

Tak, wygląda na 'apt-get install mono-complete' installed version 2.6.7 gdzie Potrzebuję co najmniej 2.8 dla .net 4.0 ... wygląda na to, że muszę zainstalować 2.10 ze źródła .. bah. W każdym razie dzięki! – natli

Powiązane problemy