Autor Beitrag
Talemantros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Do 20.03.14 21:05 
Guten Abend,
ich baue ein kleines Projekt und stehe wie einige Wissen ja noch sehr am Anfang mit C# und Co.

Jetzt würde ich gern eine Updateroutine schreiben.
Davon ausgehen, dass ich dies öfter mal brauchen könnte würde ich dies gern auslagern um sie öfter nutzen zu können.

NUn habe ich mein Hauptprojekt und eine Klassenbibliothek namens MyClasses gemacht.
Im Projekt MyClasses habe ich einen Unterordner "Updates" gemacht und dort 2 *.cs generiert.

Nun habe ich im Hauptprojekt einen Verweis auf das Projekt MyClasses gesetzt und wollte dort in einem Form es einbinden mit:

ausblenden C#-Quelltext
1:
using MyClasses.Updates //Updates für den Unterordner					


Aber leider funktioniert dies so nicht. Er findet den Namensraum irgendwie nicht.

Gibt es da ein grundsätzlich anderes Vorgehen? Oder habe ich was falsch gemacht?

Für Hilfe zum Grundsätzlichen Verstehen wäre ich dankbar.

VG
Daniel
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 20.03.14 21:51 
Die using Direktive bindet nichts ein. Wie die Doku schon erklärt ist sie nur dazu da das du Klassen nicht voll qualifizieren musst.
Also das du zum Beispiel einfach File schreiben kannst um die File Klasse zu benutzen und nicht System.IO.File wenn denn ein "using System.IO" in der Source Code Datei erwähnt ist.

Wenn du Typen aus einem anderen Projekt benutzen willst brauchst du eine Referenz auf das andere Projekt (bzw. auf die Assembly wenn das Projekt nur in kompilierter Form vorliegt).
Dazu solltest du im Solution Explorer unterhalb deiner Projektes den Knoten References sehen und im Kontextmenü des Knotens den Menüpunkt zum hinzufügen einer Reference finden.
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Do 20.03.14 22:10 
Und es ist natürlich völlig egal, in welchen Unterordner das dann liegt.

Deine Projektmappe (Solution, *.sln)enthält ja jetzt zwei Projekte (*.csproj). (Nehme ich mal an)
Das eine Projekt erzeugt eine Assembly, also eine dll-Datei. Diese musst du nun in dem anderen Projekt referenzieren. In welchen Ordnern der Quellcode mal lag, spielt nach dem Compilieren keine Rolle mehr.

Falls du eigentlich gar keine dll erstellen wolltest, dann kannst du auch einfach nur einen vorhanden Ordner zum Projekt hinzufügen. Dann wird der Code jedesmal wieder mit compiliert.
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Do 20.03.14 22:10 
Hi,
Danke für die schnelle Reaktion.
Den Verweis hatte ich gesetzt. Muss ich dann nicht noch den Unterordner benennen?

Ist mein Gedichtes Vorgehen an der Ecke sinnig oder würde man dies anders Lösen?

Bzw. Mache ich ein Projekt für alle globalen Klassen oder soll ich für jedes eine eigenes Projekt einbinden?

Vielen lieben Dank

Gruß
Damiel

Edit: gerade nich die Antwort von jfheins gelesen. Hatte sich überschritten.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 20.03.14 22:26 
Zitat:
Ist mein Gedichtes Vorgehen an der Ecke sinnig oder würde man dies anders Lösen?

Bzw. Mache ich ein Projekt für alle globalen Klassen oder soll ich für jedes eine eigenes Projekt einbinden?


Konkret ohne Hintergrundwissen nicht zu beantworten. Aber Unterteilungen in Projekte macht man üblicherweise nicht aus technischen Erwägungen wie die von dir genannten sondern aus logischen bzw. fachlichen. Man trennt unabhängige Teile voneinander bzw. Dinge die projektspezifisch sind von Dingen von denen man annimmt das sie auch noch in anderer Form wiederverwendbar sind.

Und für jede Klasse ein Projekt vorzusehen ist natürlich völlig übertrieben. Wenn du zum Beispiel 2 Klassen hast die nur gemeinsam Sinn machen dann pack die auch in ein Projekt. Es hilft überhaupt nicht die aufzuteilen.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 20.03.14 22:48 
Hallo Talemantros,

hast du denn auch in deinen Dateien (im Unterordner "Updates") den Namensraum genauso benannt, also
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
namespace MyClasses.Updates
{
  public class Updater
  {
    // ...
  }
}

?

Du kannst dir im Visual Studio auch mit dem Object Browser (CTRL+ALT+J) (s.a. Where is the object browser in visual studio C# 2010 express edition?) die DLLs (Namensbereiche, Klassen und Methoden etc.) anschauen, um zu überprüfen, ob er auch so existiert.
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Do 20.03.14 22:58 
Hi ihr beiden,
@th69. Nein das habe ich nicht :-(. Werde ich morgen direkt antesten. Danke

@Ralf. Du würdest also ein Projekt für den Updater mit zum Beispiel 3cs Dazeien Bauern und schon aber Beispielsweise nen Login in ein anderes Projekt packen?

Danke
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 21.03.14 00:28 
Vermutlich ja. Ein Updatemechanismus ist etwas Projekt unabhängiges, wenn man den halbwegs vernünftig programmiert. Ein Login kann man zwar auch Projekt unabhängig erstellen wäre aber eher unüblich. Es sind aber definitiv 2 unabhängige Aspekte die keine Abhängigkeiten haben sollten und deshalb in verschiedene Assemblies gehören.
Talemantros Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Fr 21.03.14 07:55 
Guten Morgen und VIELEN Dank

So langsam aber sicher nimmt dies mit C# Form an.

Schönes Wochenende und bis zur nächsten Anfängerfrage :-)

Gruß
Daniel