E M N E VISNING |
[+35]Lazy |
Posted - 29 Oct 2005 : 15:46:35 Jeg må se i øjnene at jeg kommer til at arbejde mere og mere med Microsoft produkter og derfor skal jeg også i gang med at lære .NET at kende.
Jeg forventer at komme til at arbejde med flere "sprog" men det primære for mig er at få et grundliggende overblik over .NET frameworket.
Mit udgangspunkt er, at jeg behersker C, C++ og flere andre sprog, men mit kendskab til MS proprietære biblioteker og .NET er stort set lig nul!
Jeg kunne godt tænke mig forslag til: Bøger, links og andet der kan give mig en god introduktion til frameworket.
Hvis nogen kan komme med anbefalinger i forhold til værktøjer etc. så ville det også være godt
Umiddelbart havde jeg tænkt mig hoppe på et 2 årigt MSDN abonnement (der så vidt jeg kan se inkluderer standardversionen af .NET studio) men hvis det er et smartere bare at købe .NET studio så sig endelig til |
30 N Y E S T E I N D L Æ G (Nyeste først) |
[+35]Terabyte |
Skrevet - 13 Aug 2006 : 22:49:03 Lol Beerman
Du er da rundt i de gamle arkiver
Når det bliver vintertid igen må vi have denne her vækket til live igen og så er du velkommen til at følge lidt med
|
[+35]TheBeerMan |
Skrevet - 13 Aug 2006 : 11:30:07 Hvorfor læste jeg lige alt dette ? edderrøvme tørt :-) go lyst gutter |
[+35]6-shooter_X |
Skrevet - 08 Nov 2005 : 11:19:21 Lidt med XML, som database. + Opdatering
Gem som "HelloWorldDataXML.cs" og Oversæt med "csc HelloWorldXMLXML.cs"
using System;
using System.Data;
namespace HelloWorldDataXML
{
public class HelloWorldApp
{
[STAThread]
static void Main()
{
DataSet ds = new DataSet();
ds.ReadXml("hw.xml", XmlReadMode.InferSchema);
foreach (DataRow dr in ds.Tables[0].Rows)
{
Console.WriteLine("To : " + dr["Recipient"]);
Console.WriteLine("Message : " + dr["Message"]);
Console.WriteLine("From : " + dr["Sender"]);
Console.WriteLine("");
}
DataRow NewRow = ds.Tables[0].NewRow();
NewRow["Recipient"] = "Miss Piggy";
NewRow["Message"] = "Ehmm. hvad skal man sige?";
NewRow["Sender"] = "[+35]COW";
ds.Tables[0].Rows.Add(NewRow);
ds.WriteXml("hw.xml");
}
}
}
Og gem denne som "hw.xml"
<?xml version="1.0" encoding="UTF-8"?>
<MessagesToTheWorld>
<MessageToTheWorld>
<Recipient>Whoom it may concern</Recipient>
<Message>Hello world!</Message>
<Sender>[+35]</Sender>
</MessageToTheWorld>
<MessageToTheWorld>
<Recipient>COW</Recipient>
<Message>I er dumme!</Message>
<Sender>Miss Piggy</Sender>
</MessageToTheWorld>
</MessagesToTheWorld>
|
[+35]6-shooter_X |
Skrevet - 07 Nov 2005 : 15:48:28 Lidt med XML
Gem som "HelloWorldXML.cs" og Oversæt med "csc HelloWorldXML.cs"
using System;
using System.Xml;
namespace HelloWorldXML
{
public class HelloWorldApp
{
[STAThread]
static void Main()
{
string infilename = "hw.xml";
XmlDocument doc = new XmlDocument();
XmlTextReader tr = new XmlTextReader(infilename);
doc.Load(tr);
foreach (XmlNode xe in doc.SelectNodes("//*"))
if (xe.Name == "MessageToTheWorld")
{
string Recipient = "";
string Message = "";
string Sender = "";
foreach (XmlNode xn in xe.ChildNodes)
{
switch (xn.Name.ToLower())
{
case "recipient" : Recipient = xn.InnerText; break;
case "message" : Message = xn.InnerText; break;
case "sender" : Sender = xn.InnerText; break;
}
}
Console.WriteLine("To : " + Recipient);
Console.WriteLine("Message : " + Message);
Console.WriteLine("From : " + Sender);
Console.WriteLine("");
}
}
}
}
Og gem denne som "hw.xml"
<?xml version="1.0" encoding="UTF-8"?>
<MessagesToTheWorld>
<MessageToTheWorld>
<Recipient>Whoom it may concern</Recipient>
<Message>Hello world!</Message>
<Sender>[+35]</Sender>
</MessageToTheWorld>
<MessageToTheWorld>
<Recipient>COW</Recipient>
<Message>I er dumme!</Message>
<Sender>Miss Piggy</Sender>
</MessageToTheWorld>
</MessagesToTheWorld>
|
[+35]6-shooter_X |
Skrevet - 02 Nov 2005 : 11:29:44 En Windows Service.
Skriver til application-eventlog hvert 10. sekund.
Gem som hwservice.cs
using System;
using System.Windows.Forms;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.ServiceProcess;
using System.Configuration.Install;
namespace HelloWorldApp
{
public class HelloWorldSvc : System.ServiceProcess.ServiceBase
{
private System.Timers.Timer timer;
public HelloWorldSvc()
{
timer = new System.Timers.Timer();
timer.Interval = 10000; // Gør noget hver t 10. sekund
timer.Elapsed += new System.Timers.ElapsedEventHandler(this.timer_Elapsed);
CanPauseAndContinue = true;
CanShutdown = true;
ServiceName = "HelloWorld_Service";
timer.Enabled = true;
timer.Start();
}
static void Main()
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new HelloWorldSvc() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
protected override void OnStart(string[] args)
{
timer.Start();
}
protected override void OnPause()
{
timer.Stop();
}
protected override void OnContinue()
{
timer.Start();
}
protected override void OnStop()
{
timer.Stop();
}
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
EventLog.WriteEntry("C# gets the job done on: " + System.Environment.MachineName);
}
}
[RunInstaller(true)]
public class ProjectInstaller : System.Configuration.Install.Installer
{
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller;
private System.ServiceProcess.ServiceInstaller serviceInstaller;
public ProjectInstaller()
{
serviceProcessInstaller = new System.ServiceProcess.ServiceProcessInstaller();
serviceProcessInstaller.Account = ServiceAccount.LocalSystem;
serviceInstaller = new System.ServiceProcess.ServiceInstaller();
serviceInstaller.StartType = ServiceStartMode.Automatic;
serviceInstaller.ServiceName = "HelloWorld_Service";
serviceInstaller.AfterInstall += new System.Configuration.Install.InstallEventHandler(this.serviceInstaller_AfterInstall);
Installers.AddRange(new System.Configuration.Install.Installer[] { serviceProcessInstaller, serviceInstaller });
}
private void serviceInstaller_AfterInstall(object sender, System.Configuration.Install.InstallEventArgs e)
{
MessageBox.Show(serviceInstaller.ServiceName + " succesfully installed...");
}
}
}
Oversæt med csc hwservice.cs
Gæt hvad de næste filer gør :)
Gem denne som INSTALL.CMD
installutil hwservice.exe
Gem denne som UNINSTALL.CMD
installutil /uninstall hwservice.exe
installutil /u hwservice.exe
Gem denne som STARTSVC.CMD
net start "HelloWorld_Service"
Gem denne som STOPSVC.CMD
net stop "HelloWorld_Service"
|
[+35]Tomcat |
Skrevet - 02 Nov 2005 : 05:16:10 det kan jeg roligt sige jeg ikke er, men checker alligevel den her tråd troligt hver dag man er vel ikke nørd for ingenting |
[+35]Terabyte |
Skrevet - 01 Nov 2005 : 22:54:46 ok - jeg er med hertil |
[+35]6-shooter_X |
Skrevet - 01 Nov 2005 : 22:23:33 Assemblies. Opdeling af programmet.
Først det modul der skal kaldes:
using System;
namespace HelloWorldApp
{
public class HelloWorldClass
{
public HelloWorldClass()
{
}
public void SayIt()
{
Console.WriteLine("Hello world !!!");
}
}
}
gemmes som hwclass.cs og compileres med : csc /t:library hwclass.cs
"/t:library" betyder at der skal genereres et dll, uden main-funktion. "/t:exe" betyder at der skal genereres et exe-modul og der checkes for et en gyldig main-metode. "/t:exe" er default
Og så det kaldende program:
using System;
namespace HelloWorldApp
{
class HWMain
{
static void Main()
{
HelloWorldClass hw = new HelloWorldClass();
hw.SayIt();
}
}
}
gemmes som main.cs og compileres med : csc /r:hwclass.dll main.cs
"/r:hwclass.dll" betyder at der skal ledes efter program-"stumper" i hwclass.dll
Kør main.exe |
[+35]6-shooter_X |
Skrevet - 01 Nov 2005 : 10:28:48 Kald af webservice...
Gem som "callws.cs" og kør "csc callws.cs" Kør callws.exe
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Xml.Serialization;
using System.Web.Services.Protocols;
using System.Web.Services;
namespace HelloWorldApp
{
class HelloWorld
{
[STAThread]
static void Main()
{
Application.Run(new HWForm());
}
} // HelloWorld
public class HWForm : Form
{
private Button btnExit;
private Button btnCallHW;
private Label lblHW;
public HWForm()
{
btnExit = new System.Windows.Forms.Button();
btnExit.Location = new System.Drawing.Point(102, 83);
btnExit.Size = new System.Drawing.Size(100, 23);
btnExit.Text = "Exit";
btnExit.Click += new System.EventHandler(btnExit_Click);
btnCallHW = new System.Windows.Forms.Button();
btnCallHW.Location = new System.Drawing.Point(102, 113);
btnCallHW.Size = new System.Drawing.Size(100, 23);
btnCallHW.Text = "Call Webservice HW";
btnCallHW.Click += new System.EventHandler(btnCallHW_Click);
lblHW = new System.Windows.Forms.Label();
lblHW.AutoSize = true;
lblHW.Location = new System.Drawing.Point(99, 32);
lblHW.Text = "Hello World!!";
ClientSize = new System.Drawing.Size(384, 165);
Controls.Add(this.lblHW);
Controls.Add(this.btnExit);
Controls.Add(this.btnCallHW);
Text = "Hello world !!";
}
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void btnCallHW_Click(object sender, EventArgs e)
{
HelloWorldWS ws = new HelloWorldWS();
Text = "Received : '"+ ws.HelloWorld() +"' from Webservice";
}
} // HWForm
[System.Web.Services.WebServiceBindingAttribute(Name="Service1Soap", Namespace="http://clan35.learns.dotnet/")]
public class HelloWorldWS : System.Web.Services.Protocols.SoapHttpClientProtocol
{
public HelloWorldWS()
{
this.Url = "http://localhost/wshelloworld/helloworld.asmx";
}
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://clan35.learns.dotnet/HelloWorld", RequestNamespace="http://clan35.learns.dotnet/", ResponseNamespace="http://clan35.learns.dotnet/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public string HelloWorld()
{
object[] results = this.Invoke("HelloWorld", new object[0]);
return ((string)(results[0]));
}
} // HelloWorldWS
}
|
[+35]6-shooter_X |
Skrevet - 01 Nov 2005 : 07:09:36 Hello world. Webservice..
Gem dette som c:\inetpub\wwwroot\wshelloworld\helloworld.asmx
Og prøv at skrive "http://localhost/wshelloworld/helloworld.asmx" i browseren
<% @WebService Language="c#" Class="HelloWorldWS" %>
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://clan35.learns.dotnet/")]
public class HelloWorldWS : System.Web.Services.WebService
{
public HelloWorldWS ()
{
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
}
|
[+35]6-shooter_X |
Skrevet - 01 Nov 2005 : 06:20:31 Hvis du først installerer IIS efter dotnet, skal du køre
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i
for at registrere aspx i IIS'en. |
[+35]Lazy |
Skrevet - 01 Nov 2005 : 02:01:12 OK, med så langt bortset fra IIS. (Jaja, jeg ved det Men har hele tiden haft en apache kørende i stedet )
Skal der installeres noget ekstra for at IIS kan fortolke asp sider?
|
[+35]Terabyte |
Skrevet - 01 Nov 2005 : 00:46:48 quote: Oprindeligt skrevet af [+35]6-shooter
Det er din installation der er noget galt med.. De' en Om'er
Så er jeg med igen
og med IIS'en da jeg først fik den til at virke
|
[+35]6-shooter_X |
Skrevet - 31 Oct 2005 : 23:18:23 [TERA] Har du sat noget specielt op i din dos-boks ? Compatibilitymode f.ex? |
[+35]Klumpen[Wa] |
Skrevet - 31 Oct 2005 : 23:09:56 Som begynder til et sprog synes jeg altid Sams Teach Yourself *** in 21 Days bøger har været gode at få i hånden.
Så sådan en vil jeg da klart anbefale at købe hvis det er:
http://www.amazon.com/exec/obidos/tg/detail/-/0672320711/002-2458785-7281617?v=glance |
[+35]6-shooter_X |
Skrevet - 31 Oct 2005 : 22:48:45 Vil du være med ? |
[+35]KillerBee |
Skrevet - 31 Oct 2005 : 22:42:15 Hmpf! Og min kone kalder MIG nørd! |
[+35]6-shooter_X |
Skrevet - 31 Oct 2005 : 21:54:04 Det er din installation der er noget galt med.. De' en Om'er
|
[+35]Terabyte |
Skrevet - 31 Oct 2005 : 20:26:24 quote: Oprindeligt skrevet af [+35]6-shooter
Her er lige det første
using System;
namespace HelloWorldApp
{
class HWConsole
{
static void Main()
{
Console.WriteLine("Hello world!!");
}
}
}
gem som hw.cs og kør "csc hw.cs" i et commandwindow. Så har du dit første C# .Net console-program, hw.exe.
Det næste bliver et WindowsForms program MED EN KNAP. WOOOOHOOOO....
Lol - tænk at jeg var i stand til at gøre det forkert
|
[+35]Terabyte |
Skrevet - 31 Oct 2005 : 16:36:05 gudfader for noget vrøvl - jeg var nødt til at tage på arbejde og nu er jeg allerede sakket agterud |
[+35]6-shooter_X |
Skrevet - 31 Oct 2005 : 11:15:02 MFC Versionen, dog uden eventhandler til knappen. Den er fundet på nettet, da jeg ikke selv har brugt MFC.
#include <afxwin.h>
class HelloApplication : public CWinApp
{
public:
virtual BOOL InitInstance();
};
HelloApplication HelloApp;
class HelloWindow : public CFrameWnd
{
CButton* m_pHelloButton;
public:
HelloWindow();
};
BOOL HelloApplication::InitInstance()
{
m_pMainWnd = new HelloWindow();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
HelloWindow::HelloWindow()
{
Create(NULL,
"Hello World!",
WS_OVERLAPPEDWINDOW|WS_HSCROLL,
CRect(0,0,140,80));
m_pHelloButton = new CButton();
m_pHelloButton->Create("Hello World!",WS_CHILD|WS_VISIBLE,CRect(20,20,120,40),this,1);
}
|
[+35]Klumpen[Wa] |
Skrevet - 31 Oct 2005 : 10:17:11 Nå for søren... jeg synes bare jeg har fået at vide at du var datamekaniker engang (og også derfor jeg bliver kaldt Lazy2?)
Vi har kun lige snuset til C# programmering, men generelt var jeg faktisk rimeligt imponeret og jeg ville nok, hvis jeg havde tænkt mig at programmere når jeg er færdig, vælge C#.
Lige nu må jeg dog nøjes med alm. C++ da vi sidder midt i svendeprøveprojekt som skal afleveres på fredag o_O |
[+35]Lazy |
Skrevet - 31 Oct 2005 : 09:20:59 quote: Oprindeligt skrevet af [+35]Klumpen[Wa]
Hva dælen Lazy... lærer data(mekanik/fag'erne) på øen ikke MFC programmering?
Hehe... Jeg er altså hverken datamekaniker eller "fag". Bortset fra det, så er mit eneste reelle kendskab til WIN-GUI fra Borland C++. Deres OW-etellerandet bibliotek fik jeg aldrig sat mig ordentlig ind i, da jeg allerede dengang mente jeg ville have haft mere ud af at lære om MFC. Mine afgangsprojekter var programmering af en proxy-server og en databasedrevet webmail-server. Begge dele som Linux daemons, så der havde jeg ikke meget brug for GUI
|
[+35]Klumpen[Wa] |
Skrevet - 31 Oct 2005 : 02:07:47 Hva dælen Lazy... lærer data(mekanik/fag'erne) på øen ikke MFC programmering? |
[+35]Lazy |
Skrevet - 31 Oct 2005 : 02:00:12 quote: Oprindeligt skrevet af [+35]6-shooter
Så lad da din indføring i .Net starte med lidt religion!
Hvordan ser din (winexe) Hello World, med knap, ud i C ?
STL er jo noget helt andet og i den retning tror jeg ikke du bliver skuffet.
Jeg tror jeg springer religionen over Jeg ejer ikke en eneste fil med en gui-applikation i C til windows. Jeg har noget C++ som er mildest talt kaoskode, hvilket er en af årsagerne til at jeg aldrig syntes særlig godt om MS SDK. (Mine evner på det tidspunkt var ikke til MFC.) Med GNU C++ og Qt ville det være noget i stil med: #include <qapplication.h>
#include <qlabel.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QLabel minLabel("Hello World!", 0);
minLabel.setAlignment(Qt::AlignLeft);
minLabel.setCaption("Hello World!");
minLabel.resize(300, 240);
a.setMainWidget(&minLabel);
minLabel.show();
return(a.exec());
} Men det er så også snyd fordi det meste defaulter Til gengæld er den kode du skrev jo nærmest selvforklarende. Mit problem bliver nok præcis det samme som java's "swing" ting. Simple ting kræver mange linier og det irriterer mig
Grunden til at jeg tænker STL er blot at jeg ikke aner en fis om windows GUI programmeríng og stadig betragter alt GUI som en containerklasse.
|
[+35]6-shooter_X |
Skrevet - 31 Oct 2005 : 00:57:51 Og en WebForms.
<%@ Page Language="C#" AutoEventWireup="true" %>
<script runat=server>
void Page_Load(object sender, EventArgs e)
{
Button btnExit = new Button();
btnExit.Text = "Exit";
btnExit.Click += delegate {Response.Redirect("http://www.clan35.dk");};
Label lblHW = new Label();
lblHW.Text = "Hello World!!";
HWForm.Controls.Add(lblHW);
HWForm.Controls.Add(btnExit);
Title = "Hello world !!";
}
</script>
<html>
<head runat=server />
<body>
<form id=HWForm runat=server />
</body>
</html>
|
[+35]6-shooter_X |
Skrevet - 30 Oct 2005 : 23:57:25 Så lad da din indføring i .Net starte med lidt religion!
Hvordan ser din (winexe) Hello World, med knap, ud i C ?
STL er jo noget helt andet og i den retning tror jeg ikke du bliver skuffet. Vi kan jo fægte lidt. Vis mig din, så viser jeg dig min :) Så kommer der en rød tråd fra din gamle til din nye verden!!!
|
[+35]Lazy |
Skrevet - 30 Oct 2005 : 22:38:17 Hehe... Jeg savner allerede C og STL.
Det virker helt Java'sk og temmelig redundant at skulle sætte alting specifikt for en sk*de exitknap
Må vist hellere få downloadet...
|
mAx |
Skrevet - 30 Oct 2005 : 22:36:30 uhh ville gerne igang med at programmere igen når i diskuttere alt det det , tror bare at jeg har lånt min c++ bog ud (eller lagt den et sted jeg ikke kan huske) |
[+35]6-shooter_X |
Skrevet - 30 Oct 2005 : 22:04:15 Her er det "minimale" WindowsForms (.Net term for et almindeligt windows) -program.
Og så skal jeg lige sige, at det her er IKKE som projekterne ser ud i Visual Studio. Det kan vi også godt diskutere, men jeg synes, at det er mere spændende, hvad der kan gøres gratis, "the notepad way", når det er i +35-regi. Og så er der heller ingen "magi", som man tit oplever i IDE'er.
Gem som hw.cs , kør "csc hw.cs" . Voila.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace HelloWorldApp
{
static class HelloWorld
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new HWForm());
}
} // HelloWorld
public class HWForm : Form
{
private Button btnExit;
private Label lblHW;
public HWForm()
{
btnExit = new System.Windows.Forms.Button();
btnExit.Location = new System.Drawing.Point(102, 83);
btnExit.Size = new System.Drawing.Size(75, 23);
btnExit.Text = "Exit";
btnExit.Click += new System.EventHandler(btnExit_Click);
lblHW = new System.Windows.Forms.Label();
lblHW.AutoSize = true;
lblHW.Location = new System.Drawing.Point(99, 32);
lblHW.Text = "Hello World!!";
ClientSize = new System.Drawing.Size(284, 161);
Controls.Add(this.lblHW);
Controls.Add(this.btnExit);
Text = "Hello world !!";
}
private void btnExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
} // HWForm
}
|