Frage

Ich verwende einen bestimmten Befehl in meinem C # -Code in, die gut funktioniert. Allerdings, so heißt es in "unmanaged" Code schlecht zu benehmen.

Was ist verwalteten oder nicht verwalteten Code?

War es hilfreich?

Lösung

Hier ist ein Text von MSDN über nicht verwalteten Code .

  

Einige Bibliothek Code muss in den nicht verwalteten Code aufrufen (beispielsweise native Code-APIs, wie Win32). Da dies für verwalteten Code aus dem Sicherheitsbereich geht, ist die gebotene Vorsicht erforderlich.

Hier finden Sie einige andere kostenlose explication über Managed Code:

  • Code, der von der CLR ausgeführt wird.
  • Code, der die Common Language Runtime, die Grundlage des .NET Framework zielt, wird als verwalteten Code bekannt.
  • Managed Code liefert die notwendigen Metadaten für die CLR Dienste zur Verfügung zu stellen, wie Speicherverwaltung, sprachübergreifende Integration, Codezugriffssicherheit und automatische Kontrolle der Lebensdauer von Objekten. Der gesamte Code auf Basis IL führt als verwalteten Code.
  • Code, der unter der CLI-Ausführungsumgebung ausgeführt wird.

Für Ihr Problem:

Ich denke, es ist, weil NUnit Code für Unittesting ausführen und könnte einen Teil davon hat, die nicht verwaltet ist. Aber ich bin nicht sicher, es, so nehmen Sie nicht diese für Gold. Ich bin sicher, dass jemand in der Lage sein, finden Sie weitere Informationen darüber zu geben. Hoffe, es hilft!

Andere Tipps

Dieses ist ein guter Artikel über das Thema.

Um es zusammenzufassen,

  1. Managed Code ist nicht in Maschinencode, sondern auf eine Zwischensprache kompiliert, die von einigem Service auf einer Maschine und ausgeführt interpretiert und daher wird in ein (hoffentlich!) Betrieb sicheren Rahmen, die gefährlichen Dinge Griffe wie Speicher und Threads für Sie. Im modernen Sprachgebrauch bedeutet dies häufig .NET aber muss nicht.
  

Ein Anwendungsprogramm, das in einer Laufzeit-Engine ausgeführt wird   in der gleichen Maschine installiert. Die Anwendung kann nicht ohne sie laufen.   Die Laufzeitumgebung stellt die allgemeine Bibliothek von Software   Routinen, die vom Programm verwendet werden und in der Regel führt einen Speicher   Verwaltung. Es kann auch Just-in-Time (JIT) Umwandlung liefert aus   Quellcode zu ausführbarem Code oder aus einer Zwischensprache   ausführbarer Code. Java, Visual Basic und Common Language Runtime .NET   (CLR) sind Beispiele für Laufzeitmotoren. ( Lesen Sie mehr )

  1. Unmanaged Code ist in Maschinencode kompiliert und daher von den OS direkt ausgeführt. Es hat daher die Fähigkeit schädlich / mächtige Dinge Managed Code zu tun nicht. Dies ist, wie alles funktioniert verwendet, so ist es normalerweise mit alten Sachen wie .dlls verbunden.
  

Ein ausführbares Programm, das von selbst läuft. von dem Betrieb gestartet   System ruft das Programm auf und verwendet die Software-Routinen in der   System arbeitet, aber seine nicht ein anderes Software-System erfordern,   benutzt. Assemblersprache Programme, die in Maschine zusammengebaut wurden   Sprache und C / C ++ Programme für eine in Maschinensprache übersetzt   bestimmte Plattform sind Beispiele für nicht verwalteten Code. ( lesen mehr )

  1. Native Code ist oft mit Unmanaged auch, aber nicht identisch ist.

Wenn Sie denken, von nicht verwalteten , denken maschinenspezifische, maschinennahen Code. Wie x86-Assembler-Sprache. Unmanaged (nativ) Code kompiliert und direkt auf dem Prozessor es wurde ausgeführt verknüpft entworfen, ohne alle OS Sachen für den Moment. Es ist nicht tragbar, aber es ist schnell. Sehr einfach, abgespeckte Code.

Managed Code ist alles von Java zu alt interpretierenden BASIC, oder alles, was unter .NET läuft. Managed Code wird typischerweise auf ein Zwischenniveau zusammengestellt P-Code oder Byte-Code-Satz von Anweisungen. Diese sind nicht maschinenspezifische Befehle, obwohl sie Assemblersprache ähnlich aussehen. Managed Code dämmt das Programm von der Maschine auf es läuft, und stellt eine sichere Grenze, in dem alle Speicher indirekt zugeordnet sind, und allgemein gesprochen, Sie haben keinen direkten Zugriff auf Computerressourcen wie Ports, Speicheradressraum, den Stapel, etc . Die Idee ist, in einer sichereren Umgebung ausgeführt werden.

von einem verwalteten Variable zu konvertieren, sagen wir, zu einem nicht verwalteten ein, müssen Sie das eigentliche Objekt selbst bekommen. Es ist wahrscheinlich in einigen zusätzlichen Verpackung eingewickelt oder verpackt. Nicht verwalteten Variablen (wie eine ‚int‘, sagen wir) - auf einer 32-Bit-Maschine - dauert genau 4 Byte. Es gibt keinen Overhead oder zusätzliche Verpackung. Der Prozess von zu verwaltenden nicht verwalteten Code gehen - und wieder zurück - wird als „ Serialisieren “. Es ermöglicht Ihre Programme, um die Grenze zu überqueren.

In so wenigen Worten wie möglich:

  • verwalteten Code = .NET-Programme
  • nicht verwalteten Code = "normal" Programme

Im Grunde nicht verwalteten Code ist Code, der (auch bekannt als nicht VB.NET, C #, etc.) nicht unter der .NET CLR laufen. Meine Vermutung ist, dass NUnit einen Läufer / Wrapper hat, die nicht .NET-Code ist (auch bekannt als C ++).

  

Managed Code:
  Code, der unter einem „Kooperationsvertrag“ läuft mit   die Common Language Runtime. Managed Code muss die Metadaten liefern   erforderlich, dass die Laufzeitdienste zur Verfügung zu stellen, wie Speicher   Management, sprachübergreifende Integration, Codezugriffssicherheit und   automatische Kontrolle der Lebensdauer von Objekten. Der gesamte Code auf Basis von Microsoft   Zwischensprache (MSIL) ausführt als verwaltete Code.

     

Un-Managed-Code:
  Code, der ohne Rücksicht auf die erstellt wird,   Konventionen und Anforderungen der Common Language Runtime. Unmanaged   Code ausführt in der Common Language Runtime-Umgebung mit minimalem   (Dienstleistungen zum Beispiel keine Müllabfuhr, begrenzt Debuggen und   usw.).

Referenz: http: // www. dotnetspider.com/forum/11612-difference-between-managed-and-unmanaged-code.aspx

NUnit lädt die Unit-Tests in einer separaten AppDomain, und ich nehme an dem Einstiegspunkt nicht (wahrscheinlich nicht erforderlich) genannt zu werden, damit der Eintrag Baugruppe ist null.

Managed Code ist, was C # .Net, VB.Net, F # .Net etc Compiler erstellen. Es läuft auf der CLR, die unter anderen Dienste wie Garbage Collection bietet und Referenzprüfung und vieles mehr. denkt also davon, wie mein Code von der CLR verwaltet wird.

Auf der anderen Seite, nicht verwaltete Code kompiliert direkt in Maschinencode. Es verwaltet nicht durch CLR.

Managed Code läuft in der Umgebung von CLR heißt .NET runtime.In kurz alle IL verwaltet code.But, wenn Sie einige Software von Drittanbietern Beispiel VB6 oder VC ++ Komponente verwenden sie sind nicht verwalteten Code als .NET-Runtime (CLR) keine Kontrolle über die Source-Code-Ausführung die Sprache.

Managed Code: - Kodex, die MSIL (Zwischensprache) Form nach der Sprache Compiler Kompilierung entwickelt und direkt von CLR genannt verwalteten Code ausgeführt. zB: - Alle von .net Framework unterstützt 61 Sprachcode

Unmanaged Code: -. Code, der für die vor .net entwickelte MSIL Form nicht zur Verfügung steht und es von CLR ausgeführt wird direkt vielmehr wird CLR zu Betriebssystem umleiten dies als nicht verwalteten Code bekannt ist

zB: -KOM, Win32-API

  • Managed Code:. Code in .NET-Sprache geschrieben wie C #, VB.NET
  • Nicht verwaltete Code: Code nicht in .NET-Sprache geschrieben und MSIL tut verstehen nicht, was es ist und kann nicht ausgeführt werden unter CLR; wie Steuerelemente von Drittanbietern haben wir in unseren .NET-Anwendungen, die in .NET-Sprachen nicht erstellt.

Zunächst einmal verstehen, bevor .NET framework waren Microsoft die Stand-alone-Produkte bieten wie MFC (Visual C++), VB, FoxPro usw.

Im Jahr 2002 kombiniert Microsoft seine Produkte und machte .NET Framework. Jetzt gibt es einen Unterschied zwischen dem, wie Code ausgeführt wurde, bevor und wie Code verwaltet und in .NET Framework ausgeführt. Microsoft eingeführtes Konzept der CLR mit .NET Framework, das der Code von jedem unterstützten lanugague von .NET-Framework kommt kompiliert und bietet zusätzliche Funktionalitäten wie memory mangement, garbage collection etc. Aber, wie CLR Funktionen waren direkt vor nicht zur Verfügung.

  

Wenn Sie also Bibliothek / Code in .NET Framework erstellen (kompiliert mit   CLR) dann ist das Managed code genannt. Sie können diese Bibliothek verwenden   weiter in anderem .NET-Anwendung / Projekt, und auch dort wird CLR   verstehen, wie es kompiliert wurde, bevor, und das ist, warum es bleibt Ihre   verwalten Code.

OTOH wenn Sie die Bibliotheken verwenden mögen, die vor dem .NET-Framework geschrieben wurden, dann können Sie mit gewissen Einschränkungen tun, aber nicht vergessen, da CLR zu diesem Zeitpunkt nicht da war, so jetzt, CLR nicht verstehen und übersetzen dieser Code erneut. Und dies wird unmanaged code genannt. Bitte beachten Sie, dass, Bibliotheken / assembilies von einigen Dritten erstellt bestimmten Funktionen zur Verfügung zu stellen / Werkzeug kann auch als unmanage Code angesehen werden, wenn nicht CLR compatiblie ist.

In Laien ausgedrückt, Verwalten Code ist etwas, was Ihre CLR versteht und es auf eigene für die weitere Ausführung zusammenstellen können. In .NET Framework (von jeder Sprache, das ist auf .NET-Framework arbeiten) Wenn Code geht einige Meta-Daten Informationen dann Code Versorgung CLR, so dass CLR zur Verfügung stellen kann Ihnen angegebenen Merkmale hier . Nur wenige von ihnen sind Garbage collection, Performance improvements, cross-language integration, memory management etc.

OTOH, unmanged Code ist etwas Bestimmtes zu Maschine und einsatzbereit, keine Notwendigkeit, sie weiter zu verarbeiten.

Von Pro C # 5 und .NET 4.5 Framework:

  

Managed vs Unmanaged Code:   Der vielleicht wichtigste Punkt über die C # Sprache zu verstehen ist, dass sie Code erzeugen kann, dass   nur innerhalb der .NET-Laufzeit ausführen kann (man könnte nie C # verwenden, um einen nativen COM-Server oder ein bauen   nicht verwalteten C / C ++ Applikation). Offiziell gesagt, verwendet der Begriff, den Code zu beschreiben, die Targeting   .NET Runtime-Code verwaltet. Die binäre Einheit, die das verwaltete Code enthält, ist eine Anordnung bezeichnet   (Weitere Details zu den Baugruppen in nur ein bisschen). Im Gegensatz dazu Code, der nicht direkt von .NET gehostet werden kann   Laufzeit ist nicht verwalteten Code bezeichnet wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top