Warum muss ich nicht auf "System.dll" verweisen, um den Namespace "System" zu verwenden?

8

Ich arbeite an einer Aufgabe, die "Keine externen Bibliotheken verwenden" angegeben hat. Also habe ich eine c # -Anwendung erstellt, und das erste, was ich getan habe, war, alle Referenzen der DLL standardmäßig zu entfernen ... einschließlich "System.dll".

Allerdings kann ich das noch zu meinem Code hinzufügen:

%Vor%

Ich war nur neugierig, wie ich brauche, System.dll als Referenz in meinem Projekt zu haben, um dies zu tun. Danke!

    
ntsue 19.07.2012, 11:54
quelle

5 Antworten

10

mscorlib.dll enthält Elemente in diesen beiden Namespaces.

Sie müssen mit der rechten Maustaste auf Ihr Projekt klicken & gt; Eigenschaften & gt; Bauen & gt; Erweitert ... und markieren Sie "Nicht auf mscorlib.dll verweisen", um diese Referenz zu entfernen.

    
Rawling 19.07.2012, 11:56
quelle
2

Verschiedene Assemblies können zum selben Namespace beitragen.

Auch wenn Sie nicht auf System.dll verweisen, verweisen Sie immer noch (implizit) auf mscorlib.dll, die viele Typen zum System -Namespace beiträgt.

    
Jeppe Stig Nielsen 19.07.2012 11:58
quelle
0

Diese Referenzen sind wahrscheinlich in Ihrer Web.config - oder Machine.config -Datei definiert, daher sind sie standardmäßig enthalten.

    
Garrett Vlieger 19.07.2012 11:56
quelle
0

Dies sind die Standardbibliotheken. Ich glaube, Ihre Frage lautet: "Verwenden Sie keine Dlls von Drittanbietern"

    
SMK 19.07.2012 11:59
quelle
0

Wenn Sie direkt über die Befehlszeile kompilieren, wird eine andere Gruppe von Switches, einschließlich Standardbibliotheksreferenzen, vom Compiler über die Standardantwortdatei (csc.rsp) analysiert, die sich im dasselbe Verzeichnis wie der Compiler. Die Tatsache, dass Sie in der Lage sind, Namespaces aus der Basisklassenbibliothek zu importieren, ohne sie explizit während der Kompilierung zu referenzieren, liegt an der Tatsache, dass die enthaltenen Assemblys standardmäßig in Ihrem Programm enthalten sind. Um dieses Verhalten in der Befehlszeile zu ändern, können Sie mithilfe der Option / nostdlib erzwingen, dass mscorlib.dll nicht eingeschlossen wird, oder Sie können / noconfig verwenden, um die gesamte Standardantwortdatei vollständig zu ignorieren. Außerdem bin ich mir nicht sicher, was Sie mit system.dll meinen, denn die von Ihnen erwähnten Namespaces sind in mscorlib.dll enthalten. Außerdem denke ich, dass Ihr Kursleiter unter "externe Bibliothek" alle Drittanbieter-Assemblys gemeint haben muss, die Sie bei der Lösung des Problems unterstützen. Alles, was mit dem .NET SDK geliefert wird, wäre eher eine Framework-Bibliothek. Es sei denn, dein Lehrer ist wirklich hart und möchte, dass du das Rad neu erfindest: P

    
Vincent Alegrete 21.04.2013 17:00
quelle

Tags und Links