Kursvorbereitung / C#.NET Hallo Welt

C#.NET Hallo Welt

C#.NET Hallo Welt

pic/cs_Einstieg_IL.png

Erstellen eines C#.NET Console-Projekts

Starten Sie Visual Studio. Über Datei|Neu|Projekt erhalten Sie diese Eingabemaske:

pic/cs_neues_Projekt.png

Sobeld Sie die Daten eingegeben haben, passiert im Hintergrund schon eine ganze Menge. Beispielsweise wird auf Ihrem Rechner ein neues Verzeichnis angelegt, das eine ganze Reihe von Unterverzeichnissen und Dateien beinhaltet. Auf meinem Rechner lautet der Pfad, der diese Verzeichnisstruktur erhält:


C:\Users\Wilfried Grupe\source\repos\

In diesem Verzeichnis finden Sie also diese Unterverzeichnisse:

pic/cs_neues_Projekt_Verzeichnisstruktur.png

In CSharpSchulung finden Sie neben einem Unterverzeichnis desselben Namens auch eine Datei CSharpSchulung.sln. Diese hat (kurzgefasst) diesen Inhalt:


Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = ...
MinimumVisualStudioVersion = ...
Project ...
EndProject
Global
  GlobalSection(SolutionConfigurationPlatforms) = preSolution
    Debug|Any CPU = Debug|Any CPU
    Release|Any CPU = Release|Any CPU
  EndGlobalSection
  GlobalSection(ProjectConfigurationPlatforms) = postSolution
    ...
  EndGlobalSection
  GlobalSection(SolutionProperties) = preSolution
    HideSolutionNode = FALSE
  EndGlobalSection
  GlobalSection(ExtensibilityGlobals) = postSolution
    ...
  EndGlobalSection
EndGlobal

Im Verzeichnis CSharpSchulung\CSharpSchulung finden Sie drei Dateien.

Die App.config-Datei ist eine XML-Datei.


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime 
            version="v4.0" 
            sku=".NETFramework,Version=v4.6.1" />
    </startup>
</configuration>

Die CSharpSchulung.csproj-Datei ist ebenfalls ein XML-Dokument, das ich zur besseren Übersicht verkürzt darstelle.


<?xml version="1.0" encoding="utf-8"?>
<Project 
   ToolsVersion="15.0" 
   xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import 
     Project="..." 
     Condition="..." />
  <PropertyGroup>
    <!-- diverse Inhalte -->
  </PropertyGroup>
  <PropertyGroup Condition="...">
    <!-- diverse Inhalte -->
  </PropertyGroup>
  <PropertyGroup Condition="...">
    <!-- diverse Inhalte -->
  </PropertyGroup>
  <ItemGroup>
    <!-- diverse Inhalte -->
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="App.config" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

Die dritte Datei Program.cs wird Sie besonders interessieren: Hier steht der Start-Quellcode, den Sie nach Herzenslust anpassen können. Hierzu später mehr.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharpSchulung
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

Die AssemblyInfo.cs

Auch in den untergeordneten Verzeichnissen finden Sie mehrere Dateien. Von Interesse ist in CSharpSchulung\CSharpSchulung\Properties die Datei AssemblyInfo.cs, auf die bereits in CSharpSchulung.csproj hingewiesen wird. Hier steht es Ihnen frei, Zusatzinformationen zum Projekt (genauer: zur Assembly) bereitzustellen, etwa eine Beschreibung, Copyright, Produktname, Versionierung und anderes mehr.

Sie können die AssemblyInfo.cs zwar auch direkt editieren, sinnvoller ist allerdings der Weg über Projekt|CSharpSchulung-Eigenschaften.

pic/cs_Projekt_Eigenschaften.png

Wählen Sie hier die Anwendung aus, so wird Ihnen diese Ansicht angeboten:

pic/cs_AssemblyInfo1.png

Über den Klick auf den Button Assemblyinformationen kommen Sie auf diese Ansicht, in der Sie Ihre Eintragungen machen können.

pic/cs_AssemblyInfo2.png

Das Ergebnis Ihrer Anpassungen sehen Sie in AssemblyInfo.cs:


using System.Resources;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("CSharpSchulung")]
[assembly: AssemblyDescription("Das Projekt 
                                beschreibt den Einstieg in die 
                                Programmierung mit C#.NET")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Wilfried Grupe")]
[assembly: AssemblyProduct("C#.NET Schulung 2018")]
[assembly: AssemblyCopyright("Copyright ©  2018")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: NeutralResourcesLanguage("de-DE")]

Kommen wir zurück zur Datei CSharpSchulung\CSharpSchulung\Program.cs. Wenn Sie vor der Zeile static void Main(string[] args) drei /// setzen, bietet Ihnen Visual Studio umgehend zwei Ergänzungen <summary> ... </summary> sowie <param name="args"></param> an. Hier haben Sie die Möglichkeit, wichtige Informationen für die Dokumentation direkt im Quelltext zu hinterlegen.


namespace CSharpSchulung
{
    class Program
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
        }
    }
}

Ergänzen Sie den Codeteil wie folgt:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharpSchulung
{
    class Program
    {
        /// <summary>Haupteinsprungspunkt der Anwendung</summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            HelloWorld();
            Console.ReadLine();
        }
        /// <summary>
        /// Schreibt eine Begruessung auf Konsole.
        /// </summary>
        static void HelloWorld()
        {
            Console.WriteLine("Hallo Leute von heute");
        }
    }
}

Gut gemacht! Nun suchen Sie unter Ansicht|Objektkatalog oder STRG+Alt+J nach dem Eintrag CSharpSchulung. Sie werden verschiedene Ansichten finden. Wechseln Sie auf die Namespace-Ansicht:

pic/cs_Objektkatalog_Namespaces.png

Dann wird es Ihnen leicht, den Namespace CSharpSchulung wiederzufinden:

pic/cs_Objektkatalog_Namespaces_1.png

Von besonderem Interesse ist, dass Sie die Einträge, die Sie unter <summary> ... </summary> geschrieben haben, hier wiederfinden.

pic/cs_Objektkatalog_Namespaces_2.png

Ganz nebenbei haben Sie auch Ihr erstes Programm geschrieben. Mit einem Klick auf

pic/cs_Console_Starten.png

oder durch Drücken der Taste F5 starten Sie das Programm. Sie sollten nun ein neues Fenster sehen:

pic/cs_Console_1.png

Was ist passiert? Das System hat intern eine neue Datei angelegt. Wenn Sie da einmal draufklicken, wird das Programm erneut gestartet.


CSharpSchulung\CSharpSchulung\bin\Debug\CSharpSchulung.exe

Aber das ist noch nicht alles. Denn tatsächlich ist diese exe-Datei nicht direkt ausführbar, sondern sie ist eine Assemblierung, die via CLR und .NET Framework in Maschinencode verwandelt wird.

Um das zu sehen, starten Sie einmal die VisualStudio Developer Eingabeaufforderung.

pic/cs_VisualStudio_Developer_Eingabeaufforderung.png

Das ist ebenfalls eine Konsole-Umgebung. Gehen Sie hier mit dem Kommando


cd C:\Users\Wilfried Grupe\source\repos\CSharpSchulung\CSharpSchulung\bin\Debug

in das aktuelle Verzeichnis, wo die CSharpSchulung.exe-Datei liegt, und starten Sie


ildasm.exe CSharpSchulung.exe

Nun taucht ein weiteres Fenster auf, das Ihnen Näheres über die innere Struktur der IL verrät, die ich vorher erwähnt hatte.

pic/cs_ILDASM_1.png

Klicken Sie ruhig nacheinander an die angebotenen Punkte, ich beschränke mich auf die Darstellung der Main-Methode.

pic/cs_ILDASM_2.png

Hinweis: Ach das MANIFEST ist sehr interessant, hier finden Sie Einträge aus der AssemblyInfo.cs wieder.

wg / 16. Mai 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/cs_Einstieg.html