Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Ubuntu 11.10 neobsahuje některé knihovny pro Mono/.NET 3.5 ale pouze pro 4.0  (Přečteno 2615 krát)

vlabra

  • Návštěvník
  • Příspěvků: 75
Zdravím.

Mám trochu problém s Monem a Monodevelopem po instalaci Ubuntu 11.10. Mám několik projektů napsaných v .NETu 3.5 které nemohu přeložit. Po otevření solution jsem ani nemohl spustit překlad, protože mi Monodevelop hned vyhodil chybu že nenašel překladač pro .NET 3.5. To se dalo naštěstí po chvilce googlení jednoduše vyřešit instalací balíku mono-gmcs. Bohužel, stále mám problém s knihovnama. Vypadá to, že nové Ubuntu obsahuje více verzí pouze u standardních frameworkových knihoven, ale ne u ostatních (např. gtk-sharp či nunit) a v repozitářích jsem nic nenašel.

Nevíte někdo, odkud chybějící .Net 3.5 knihovny nainstalovat?

Kedrigern

Toto jsem resil take. Nejjednodusi mi prislo nastavit projejty jako .Net 4.

Knihovny jdou stahnout napr. ze starych repo pro 11.04.

Mimochodem je jednoducha cesta, jak Mono slinkovat staticky?

Zitra se na to zkusim podivat.

Kedrigern

Tak by to mohlo být toto: http://www.mono-project.com/Mono:Runtime#Bundles , ale nemám čas to vyzkoušet.

Pokud to zkusíš, tak rozhodně dej vědět. Rád se poučím, protože v Monu a GTK# hodně dělám.

vlabra

  • Návštěvník
  • Příspěvků: 75
Díky za tip, zítra to vyzkouším.
Jinak jsem si trochu hrál a přišel jsem na zajímavou věc. Koukal jsem se do balíku libgtk2.0-cil a zjistil že DLL jsou nainstalované v /usr/lib/cli. Zkusil jsem jenom ze srandy jednu knihovnu přidat do projektu a ono to fungovalo, tak jsem odebral všechny problémové reference přidal přímé reference na DLL. Bohužel odebráním gtk.sharp to odebralo designer, a smazalo i jím vygenerovaný kód. Nejzajímavější je, že to šlo i přeložit, po zakomentování volání metod z toho co to smazalo. Bohužel to ale nešlo spustit a zkončilo vyjímkou
Unhandled Exception: System.MissingMethodException: Method not found: 'System.Type.op_Inequality'.
  at MainWindow..ctor () [0x00000] in <filename unknown>:0
  at GtkTest.MainClass.Main (System.String[] args) [0x00005] in /media/Disk320G-Data/Projects/Vlabra.NET/source/VlaBra.Tests/GtkTest/Main.cs:11
[ERROR] FATAL UNHANDLED EXCEPTION: System.MissingMethodException: Method not found: 'System.Type.op_Inequality'.
  at MainWindow..ctor () [0x00000] in <filename unknown>:0
  at GtkTest.MainClass.Main (System.String[] args) [0x00005] in /media/Disk320G-Data/Projects/Vlabra.NET/source/VlaBra.Tests/GtkTest/Main.cs:11
Missing method System.Type::op_Inequality(Type,Type) in assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly /media/Disk320G-Data/Projects/Vlabra.NET/source/VlaBra.Tests/GtkTest/bin/Debug/gtk-sharp.dll
Aplikace byla ukončena signálem: SIGHUP

Pravděpodobně to spadlo proto, že se ta knihovna snažila použít něco z .NETu 4.0, což neprošlo, protože to běželo v 3.5.
Z toho vyplývá otázka, jak je možné, že monodevelop dovolí přidat do projektu pro .NET 3.5 knihovnu .NET 4.0

Kedrigern

Jo vím o co jde. .NET 4 má trochu jinou strukturu základních tříd (např. i výjimek). Přesně s touhle System.Type.op_Inequality jsem se už setkal.

Prostě ty verze nemá cenu míchat. Pokud chceš vydat release tak to slinkuj staticky. Pokud je to pro tvou potřebu či pro prográmátory, tak jen napiš, která verze je potřeba :).

Kedrigern


vlabra

  • Návštěvník
  • Příspěvků: 75
Díky moc za odkazy, zajímavé počtení plné dobrých doporučení.

Můj problém jsem nakonec vyřešil tak, že jsem všechny projekty převedl na .NET 4.0

 

Provoz zaštiťuje spolek OpenAlt.