私はC#の初心者です。実際、数日前に言語を学ぶようになったばかりです。 私はC#に関係する.NET Frameworkの概念を構築しようとしています。共通言語ランタイムを実行する管理されていないコンポーネント
私は理解していない何をここにCLRについてhttps://docs.microsoft.com/en-us/dotnet/framework/get-started/overview
を読んでいたが、著者は言うテキストのこの部分です:
.NET Frameworkが をロード管理されていないコンポーネントによってホストすることができますそれらのプロセスに共通言語ランタイムを適用し、 管理コードの実行を開始することにより、 管理対象機能と非管理対象機能の両方を利用するソフトウェア環境を作成します。 .NET Frameworkはいくつかの ランタイムホストを提供するだけでなく、サードパーティランタイム ホストの開発をサポートします。
「管理されていないコンポーネント」とは、ネイティブWindows APIを使用してプレーンC/C++で書かれたプログラムです。したがって、これらのアンマネージプログラムは、CLR DLLをプログラムアドレス空間にロードし、CLR機能を使用できるようにすることができます。このアンマネージプログラムは、CLR関数を使用して実行可能な管理対象プログラムをロードできます。あれは正しいですか?
私の理解が正しい場合、私はこれをどのような場合に行うのか知りたいと思いますか?または、なぜアンマネージドプログラムにCLRをロードしてマネージコードを実行させたいのですか?
また、「.NET Frameworkはいくつかの ランタイムホストを提供するだけでなく、サードパーティランタイムホストの開発もサポートしています」とは何を意味していますか?
私はCLRが.NET Frameworkの唯一の実行時間だと思っていました。
引用された段落は、最初の質問に正確に答えているようです。_「管理された機能と管理されていない機能の両方を利用するソフトウェア環境を作成する」_。なぜあなたはそれをしたいのですか?あなただけが言うことができます。ランタイムホストに関しては、CLRがランタイムです。ランタイムホストとは、実行時に_hosts_するものです。 CLRはそれ自体をホストしません。例えば、 https://msdn.microsoft.com/en-us/library/a51xd4ze(v=vs.100).aspxおよびhttps://stackoverflow.com/questions/2286160/what-is-the-exactly-runtime-host –
私の質問の最初の部分では、.NET C#で実際に機能(管理されていないアプリケーションの管理コードを実行していた)を使用している人がいたかどうかという点で、私は回答を探していました。いずれかの方法。 リンクありがとうございます。良いことを説明します。 – Monku
管理コードと非管理コードの両方のAPIを提供するDLLを作成しました。たとえば、他の.Net dllと同じようにC#で使うことができます。しかし、DelphiやアンマネージドC++を使用している顧客がいました。他の多くの言語でも、Cスタイルのエクスポート(stdcallまたはcdecl)を使用してDLLから関数をインポートする方法が提供されています。 – jbriggs