質問

を使用している特定のコマンドは私のC#コードで、より確かなものになるはずだ。しかし、こうぞ"のポリシー"のコードです。

何が管理またはポコードについて教えてください。

役に立ちましたか?

解決

アンマネージコードに関するMSDNのテキストを次に示します。

  

一部のライブラリコードは、アンマネージコード(たとえば、Win32などのネイティブコードAPI)を呼び出す必要があります。これはマネージコードのセキュリティ境界の外に出ることを意味するため、十分な注意が必要です。

マネージコードに関するその他の補足説明を次に示します。

  • CLRによって実行されるコード。
  • .NET Frameworkの基盤である共通言語ランタイムを対象とするコードは、マネージコードと呼ばれます。
  • マネージコードは、CLRがメモリ管理、言語間統合、コードアクセスセキュリティ、オブジェクトの自動ライフタイム制御などのサービスを提供するために必要なメタデータを提供します。 ILに基づくすべてのコードは、マネージコードとして実行されます。
  • CLI実行環境で実行されるコード。

問題の場合:

これは、NUnitがUnitTestingのコードを実行し、管理されていない部分がある可能性があるためだと思います。しかし、私はそれについて確信がありませんので、金のためにこれを受け取らないでください。誰かがそれについてあなたにもっと情報を提供できると確信しています。役に立てば幸いです!

他のヒント

この 良い記事です。

以上をまとめますと、わが

  1. 管理コード なめ機械コードが中間言語を解釈-実行による一部サービス機が営業内(う!) 安全の枠組みを取り扱う危険ないメモリのスレッドです。現代の使用においてこよくします。当期純なっています。

アプリケーションプログラムは実行される以内に実行時エンジン に設置で実行するのと全く同じです。の申請に付きとなっています。の実行環境は総合図書館ソフトウェア ルーチンのプログラムの使用は、通常行うメモリ ます。でもイム(JIT)に変換 ソースコードの実行可能コードまたは中間言語 実行可能コードです。Java、Visual Basicます。純の共通言語ランタイム (CLR)が例の実行時のエンジンです。(もっと読む)

  1. ポコード 計機械加工コードが実行のOSます。また、能力のな損傷/強力なもののマネージドコードはできません。こうしても作業するのに使用で通常でに伴う古いものです。dll.

実行可能プログラムを走る。開始から営業 システムを呼びかけを使用してソフトウェアルーチンの 経営システムが必要としない他のソフトウェアシステム 使用します。アセンブリ言語プログラムとして組み立て機 言語とC/C++プログラム作成機言語のための 特定のプラットフォーム事例のポリシーのコードです。(もっと読む)

  1. ネイティブ コードは多くの代名詞とポがで異なる場合がございます。

アンマネージドについて考えるときは、マシン固有のマシンレベルのコードを考えてください。 x86アセンブリ言語と同様。アンマネージ(ネイティブ)コードはコンパイルされ、リンクされて、設計されたプロセッサ上で直接実行されますが、現時点ではすべてのOSを除きます。ポータブルではありませんが、高速です。非常にシンプルな、コードを削除しました。

マネージドコードは、Javaから古いInterpretive BASICまで、または.NETの下で実行されるすべてのものです。マネージコードは通常、中間レベルのPコードまたはバイトコードの命令セットにコンパイルされます。これらはアセンブリ言語に似ていますが、マシン固有の命令ではありません。マネージコードは、実行中のマシンからプログラムを隔離し、すべてのメモリが間接的に割り当てられる安全な境界を作成します。一般的に、ポート、メモリアドレススペース、スタックなどのマシンリソースに直接アクセスすることはできません。 。考え方は、より安全な環境で実行することです。

マネージ変数からアンマネージ変数に変換するには、実際のオブジェクト自体に到達する必要があります。おそらく、追加のパッケージに包まれているか、箱に入れられています。アンマネージ変数( 'int'など)-32ビットマシンでは-正確に4バイトかかります。オーバーヘッドや追加のパッケージはありません。マネージコードからアンマネージコードに移行するプロセスは、「マーシャリング」と呼ばれます。プログラムが境界を越えることができます。

できるだけ少ない単語で:

  • マネージコード= .NETプログラム
  • アンマネージコード=" normal"プログラム

基本的にアンマネージコードは、.NET CLR(別名VB.NET、C#などではない)で実行されないコードです。私の推測では、NUnitには.NETコード(別名C ++)ではないランナー/ラッパーがあります。

  

マネージコード:
  「協力契約」の下で実行されるコードと   共通言語ランタイム。マネージコードはメタデータを提供する必要があります   ランタイムがメモリなどのサービスを提供するために必要   管理、言語間の統合、コードアクセスセキュリティ、および   オブジェクトの自動ライフタイム制御。 Microsoftに基づくすべてのコード   中間言語(MSIL)はマネージコードとして実行されます。

     

アンマネージコード:
  に関係なく作成されるコード   共通言語ランタイムの規則と要件。管理されていない   コードは最小限の共通言語ランタイム環境で実行されます   サービス(たとえば、ガベージコレクションなし、制限されたデバッグ、および   など)。

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

NUnitは個別のAppDomainで単体テストをロードしますが、エントリポイントが呼び出されていない(おそらく必要ない)ため、エントリアセンブリはnullです。

マネージドコードは、C#.Net、VB.Net、F#.Netなどのコンパイラが作成するものです。 CLRで実行されます。CLRは、特にガベージコレクション、参照チェックなどのサービスを提供します。 つまり、私のコードはCLRによって管理されていると考えてください。

一方、アンマネージドコードはマシンコードに直接コンパイルされます。 CLRで管理しません。

マネージコードは、CLR、つまり.NETランタイムの環境内で実行されます。要するに、すべてのILは ただし、サードパーティソフトウェアのサンプルVB6またはVC ++コンポーネントを使用している場合、 .NETランタイム(CLR)としてのアンマネージコードは、ソースコードの実行を制御できません。 言語の

マネージコード:-MSIL(中間言語)形式のコードは、言語コンパイラのコンパイル後に開発され、マネージコードと呼ばれる CLR によって直接実行されます。 例:-.netフレームワークでサポートされている61の言語コードすべて

アンマネージコード:- .net の前に開発されたコードで、MSILフォームは利用できず、 CLR ではなく CLR によって直接実行されます。これは、アンマネージコードと呼ばれるオペレーティングシステムにリダイレクトされます。

eg:-COM、Win32 API

  • マネージドコード:C#、VB.NETなどの.NET言語で記述されたコード。
  • アンマネージドコード:.NET言語で記述されていないコードとMSIL それが何であるかを理解しておらず、CLRで実行することはできません。 .NET言語で作成されていない.NETアプリケーションで使用したサードパーティ製のコントロールのように。

まずこれを理解します。 .NET framework の前に、 Microsoft MFC(Visual C ++)、VB、FoxPro など

2002年、マイクロソフトは製品を組み合わせて.NETフレームワークを作成しました。これで、以前にコードが実行された方法と、.NETフレームワークでコードが管理および実行される方法に違いがあります。 Microsoftは、.NETフレームワークで CLR の概念を導入しました。これは、.NETフレームワークのサポートされている言語から来るコードをコンパイルし、メモリ管理、ガベージコレクションなどの追加機能を提供します。このようなCLR機能は以前は直接利用できませんでした。

  

.NETフレームワークでライブラリ/コードを作成している場合(   CLR)、それはマネージコードと呼ばれます。このライブラリを使用できます   さらに他の.NETアプリケーション/プロジェクトで、そこにも、CLRは   それが以前にどのようにコンパイルされたかを理解し、それがあなたのままである理由です   コードを管理します。

OTOH .NETフレームワークより前に作成されたライブラリを使用する場合は、特定の制限を設定できますが、その時点ではCLRがなかったため、CLRは理解できず、コンパイルできません。再びこのコード。そして、これは unmanaged code と呼ばれます。 CLR互換でない場合、特定の機能/ツールを提供するためにサードパーティによって作成されたライブラリ/アセンブリも非管理コードと見なされる場合があることに注意してください。

一般的な用語では、コードの管理は、CLRが理解し、さらに実行するために独自にコンパイルできるものです。 .NETフレームワークでは、(。NETフレームワークで動作する任意の言語から)コードがCLRに渡されると、コードがメタデータ情報を提供するため、CLRはこちら。それらのほとんどは、ごみ収集、パフォーマンスの改善、言語間の統合、メモリ管理などです

OTOH、管理されていないコードは、マシンに固有のものであり、すぐに使用できるため、さらに処理する必要はありません。

Pro C#5および.NET 4.5 Frameworkから:

  

マネージコードとアンマネージコード:   おそらく、C#言語について理解する最も重要なポイントは、次のコードを生成できることです。   .NETランタイム内でのみ実行できます(C#を使用してネイティブCOMサーバーまたは   アンマネージドC / C ++アプリケーション)。公式には、ターゲットとするコードを記述するために使用される用語   .NETランタイムはマネージコードです。マネージコードを含むバイナリユニットは、アセンブリと呼ばれます   (アセンブリの詳細は少しだけ)。逆に、.NETで直接ホストできないコード   ランタイムはアンマネージコードと呼ばれます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top