Mono: Form készítésnél hiba

 ( pelz | 2008. április 27., vasárnap - 17:58 )

Sziasztok!

Tudom, hogy nem 100%-osan ide tartozik a téma, de muszáj megkérdeznem.
A "Tanuljuk meg a c# programozási nyelvet..." könyvet olvasom, de a könyvbeli második példánál elakadtam. Ott ugyanis ez szerepel:

using System;
using System.Windows.Forms;

ezeket a hibaüzeneteket adja a MonoDevelop:

error CS0234: The type or namespace name `Windows' does not exist in the namespace `System'. Are you missing an assembly reference?
error CS0246: The type or namespace name `Windows.Forms' could not be found. Are you missing a using directive or an assembly reference?

Feltételezem még installálni kell valamit, csak kérdés, hogy mit?

Ubuntu 8.04 Linux az operációs rendszerem.

Előre is kösz a segítséget!

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Ha nincs fenn a libmono-winforms2.0-cil csomag akkor azt rakd fel.

Gábor

Sajnos fel van telepítve.
Tehát valami más problémának is lennie kell.

Nem elég telepíteni a csomagot, de a fordítónak be kell állítani, hogy ezekre a csomagokra is hivatkozzon.
Most így hirtelen nem emlékszem, hogy pontosan hogy kell. mcs-nek valami kapcsolót kell megadni, MonoDevelop környezetben pedig a projektbeállításoknál kell beállítani.

Köszönöm!

A fordítást most már megoldottam. Létrehoztam egy új megoldást (solution), és abba helyeztem el a könyvben lévő programot. A referenciáknál megadtam a "System.Windows.Forms"-ot is.
Tehát a fordítás rendben van.

De, hogy láthatnám az eredményt is? Szeretném futtatni a programot, de hogyan? Mit kell tennem még?

szerintem ha komolyan c#ozni akarsz, felejtsd el a monot. aki _komolyan_ fejleszt c#ba, az nem fog monozni neked, hanem VS -el tolja.

es ha mar c#, szerintem a 3.0 -as featureok nincsenek me'g meg a monoban.

szoval inkabb egy visual studio expresst ajanlanek Neked.

Lehet, hogy igazad van, de én még csak most kezdek a c#-vel, és elsőre a mono-t találtam meg.

Most már mindenképpen szeretném a legalapvetőbb programokat a mono-ban megcsinálni, ha már belekezdtem.

miert szivatod magad?

de te tudod. tolem. igaz, 1000x tovabb tart, es csomo mindent nem tud imho. de nembaj.

Én nem "szívatásnak" nevezem, hanem tapasztalat szerzésnek.

Az a baj, hogy monoban a Windows.Forms implementáció nem 100%-os, lásd:

http://www.mono-project.com/WinForms_CodeOwners
http://www.mono-project.com/WinForms

A könyved pedig már az első példaprogramnál erre épít. Ez így tényleg szívás lesz. Plusz monodevelopban nincs vizuális form tervező WinForms-hoz, erre is csak valami félkész külső program van (winforms designer).

Ha linux alatt akarsz mono/monodeveloppal programozni, akkor inkább a Gtk#-ot tanulmányozd, ahhoz van projekt "varázsló", form tervező, és lesz sikerélmény.

Nemrég volt egy szép cikk itt a hup-on a témában:

http://hup.hu/cikkek/20080421/mono_es_gtk_sharp_attekintes

Szia Zsolt!

Most dolgozom, de este megnézem, amit küldtél. Kösz!

+1 az express-re (bár mi 2005pro-val toljuk suliban)

pont tegnap néztem a monodevelop-ot, még kb. sehol nem tart. sajnos

jah, és lehet, hogy 2005-ös express-t kéne próbálni. még ms emberkék is azt mondják, hogy a 2008 express gyenge a pro-hoz képest

persze ha te újabb dolgokkal akarsz bíbelődni (wcf, wpf, linq2sql...), akkor meg a 2005-össel nem érdemes kezdeni, mert (szintén az ms emberkék szerint) az addonok 2005höz nem túl jók. de mivel mono-zol, gondolom neked nem kellenek ilyenek

Sajnos tele van a HUP ilyen jellegű hozzászólással. Nem értem miért? Miért jó nektek állandóan azzal csesztetni a másikat, hogy miért azt használod, miért nem ezt? Miért a C++ tanulod miért nem a Java-t? Stb.

Gyerekek! Szokjunk le erről. Ha van valakinek értelmes hozzászólása az adott problémához, akkor írja meg. Ha nincs, akkor inkább hallgasson!

?

én nem csesztettem senkit, csak ajánlottam valamit. ellenben te épp engem csesztetsz, ráadásul ok nélkül

Nem akartalak megbántani bervi, de nagyon sokszor olvasok ilyen jellegű hozzászólást.
Én ezt a témát azért indítottam, hogy a monoval kapcsolatos problémámat megoldjam. Szerencsére végül sikerült is. Most még túl kezdő vagyok ahhoz, hogy ugrálgassak egyik eszközről a másikra. Nyílván nekem még bőven elég a MonoDevelop tudása. Ha majd kinőttem, akkor majd azt a kérdést teszem fel a HUP-on, hogy mi mást ajánlotok, mert túl keveset tud. Na majd akkor értelmesnek tekintem az ilyen hozzászólást. Most csak zavaró, mert az utolsó kérdésemre lehet, hogy nem válaszol már senki, mert mindenki azt figyeli majd, hogy milyen jól veszekszenek ezek itt ketten.

istenem.

ennyire sotet vagy?

megprobaltunk segiteni, csak te annyira arrogans hozzanemerto vagy, hogy nem fogadod meg az okosabbak tanacsat...

Pfff.. már ne is haragudj .. csatlakoznék én is az általad definiált arroganciaklubba, ugyanis egyet értek azzal, hogy a közölt probléma helyett a b*szogatás megy, hogy miért nem ezt, meg ezt használod.

Ugyan egyet értek veled hogy a VS nagyságrendekkel hasznosabb, mint a MonoDevelop (bár a MD sem teljesen használhatatlan szerintem, és szépen fejlődik a Monoval együtt), de minek kell másodszor-harmadszor is a fülét rágni, hogy miért "szarakodik", utána meg offenzív szavakkal dobálózni?

Ennyit akartam hozzáfűzni.

http://gyuszk.homelinux.org

-- There is never time to do it right, but always time to do it over.

miert ne?

amugy az ilyen hozzaallas miatt van ilyen sok szar hobbiinformatikus hungarisztanban :(

amugy koszonjuk leulhetsz

Témában nagyon járatlanul kérdezem, hogy a VS expresst ingyen adják microsofték? Asszem mintha valahol tőled olvastam volna C#-el kapcsolatban hasonlót. Kösz a választ! Jah és bocs az offolásért.

ingyen van. úgy rémlik, hogy pénzt nem csinálhatsz a vele készített programokból, de erről most nem találtam infót

Sziasztok!

Hát nem tudom hogyan, de egyszer csak el kezdett működni a fordító. Most már létrehozza az exe állományt is. Sajnos nem tudom megmondani, mi volt az eddigi hiba oka.

Nagyjából a következő események zajlottak le:

- Installáltam a MonoDevelop programot
- El kezdtem olvasni a "Tanuljuk meg a c# programozási nyelvet 21 nap alatt" című könyvet, amelyben ez a példaprogram volt leírva:

 
using System;
using System.Windows.Forms;

namespace HelloWin
{
  public class MyForm : Form
  {
    private TextBox txtEnter;
    private Label   lblDisplay;
    private Button btnOk;
    public MyForm()
    {
      this.txtEnter   = new TextBox();
      this.lblDisplay = new Label();
      this.btnOk      = new Button();
      this.Text = "My HelloWin App!";

	  this.txtEnter.Location = new System.Drawing.Point(16, 32);
      this.txtEnter.Size = new System.Drawing.Size(264, 20);

	  this.lblDisplay.Location = new System.Drawing.Point(16, 72);
      this.lblDisplay.Size = new System.Drawing.Size(264, 128);
			
      // btnOk
      this.btnOk.Location = new System.Drawing.Point(88, 224);
      this.btnOk.Text = "OK";
      this.btnOk.Click +=
                   new System.EventHandler(this.btnOK_Click);
      // MyForm
      this.Controls.AddRange(new Control[] {
                 this.txtEnter, this.lblDisplay, this.btnOk});
    }

    static void Main ()
    {
      Application.Run(new MyForm());
    }

    private void btnOK_Click(object sender, System.EventArgs e)
    {
      lblDisplay.Text = txtEnter.Text + "\n" + lblDisplay.Text;
    }
  }
}

- A mono nem tudott mit kezdeni ezzel, ezért fordultam hozzátok
- zZsOlTi javaslatára létrehoztam egy új megoldást, és abba helyeztem el a programot. A referenciáknál beállítottam a "System.Windows.Forms" referenciát. Ekkor az volt a baj, hogy látszólag sikerült a fordítás (0 hiba, 0 figyelmeztetés), de nem találtam sehol az exe állományt, ami a fordítás eredményének kellet volna lennie. Ezért aztán tovább nyaggattalak benneteket. Sajnos nem sikerült semmilyen eredményre jutnunk.
- Próbálkoztam azzal, hogy előállítom az exe állományt makefile segítségével, de ez sem jött össze.
- Aztán kutattam az interneten és a következő oldalra találtam: http://mono-project.hu/segedletek/gtksharp_kezdo
- Ennek alapján elkezdtem a Gtk#-val foglalkozni. A programokat terminál parancssorból fordítottam a gmcs fordító segítségével. Végre volt egy kis sikerélményem is, hogy valami legalább nekem is sikerül.
- Aztán folytattam azzal, hogy a MonoDevelop-ban írtam Gtk# megoldásokat. Szerencsére ezek is sikerültek.
- Fellelkesülve visszatértem az eredeti Windows.Forms programomhoz. És csodák-csodájára most már azt írta ki, hogy hibát észlelt a fordítás során. Nem tudta azonosítani a "System.Drawing" elemet. Ekkor referenciák közé betettem azt is, és végre rendesen lefordította a programot. Létre is hozta az exe állományt. És működött is.
- Ezután próbálkoztam a makefile generálással, és fordítással. Ez is sikeres volt.

Nagyjából ennyi az eseménytörténete a kezdeti próbálkozásaimnak a C# területén. Van valakinek ötlete, hogy mitől javult meg a MonoDevelop?

Gondolom sikerült olyanra megcsinálni a MonoDevelop programot hogy néha elromlik majd néhány újraindítás után megjavul. Sajnos sok ilyen bugos program van. Ez van.
Tippem: A függőségek átállítása sok IDE alatt okoz furcsaságokat az előre lefordított, beindexelt és bekesselt dolgok miatt. Ezeket egy újraindítás kisöpri.

Parancssori fordításhoz érdemes lehet kipróbálnod a nant rendszert. http://nant.sourceforge.net/ Tudom a fenti posztban épp az ilyen ne ezt hanem azt használd dolgokra akadtál ki. De ez tényleg jó :-)

Kösz!

Lehet, hogy megnézem, ha továbbra is lesznek gondok a MonoDevelop-val. De egyenlőre működik azóta kifogástalanul.

Build szkripteket főleg nem fejlesztőeszköz helyett szokták használni, hanem azért, hogy a build folyamat automatizálva és dokumentálva legyen.
Egyszemélyes kísérletezős projektnél persze ennek nem nagyon van jelentősége. Csak azért ajánlottam a nant-ot, mert láttam hogy make-t használtál.

Hát a "make" csak azért került nálam szóba, mert MD-ben van egy olyan parancs, hogy "Makefile-ok generálása...", és megpróbálkoztam azzal is, hátha "make"-vel sikerül létrehoznom az exe állományt. De akkor az sem működött. Most, hogy az MD rendben fordít, így a "make" is normálisan megy.