0

この回答CSharpCodeProviderは、実行時にクラスを使用して C# コード スニペットをコンパイルする方法を示しています。これはかなり特殊なタスクであるため、.NET Framework がインストールされているすべてのシステムにこの機能があるかどうかはわかりません。おそらく何か特別なものをインストールする必要があります。

C# コードのコンパイル機能はCSharpCodeProvider、.NET Framework がインストールされているシステムで利用できますか?

4

6 に答える 6

2

以前の回答はすべて正しいですが、.NET SDK/Visual Studio がインストールされていない VM でテストを行いました。これは、.NET 4 Client Profile + .NET 4 Extended Framework を備えたプレーンな 2003 サーバーです。

その結果、このセットアップでは CSharpCodeProvider が問題なく動作します!

さらに自分自身を保護したい場合は、次の呼び出しで特定のコード プロバイダーの可用性を確認できます。

   CodeDomProvider.IsDefinedLanguage("CSharp")

また、このメソッドのドキュメントには次のように記載されています。

コンピューター構成ファイル (Machine.config) の要素には、コンピューター上の各 CodeDomProvider 実装の言語プロバイダーとコンパイラ構成設定が含まれています。IsDefinedLanguage メソッドは、指定された言語名のプロバイダー構成要素を検索します。

したがって、CodeProvider が機能しないコンピューターでプログラムを実行することができます (動的コード コンパイルを無効にしたい偏執狂的なシステム管理者がいる可能性があります (ただし、CodeDomProvider を使用するには完全な信頼が必要なため意味がありません))。

于 2013-01-14T14:02:33.653 に答える
2

CSharpeCodeProvider クラスの MSDN ドキュメントによると、すべてのフレームワークで利用できます。

C# コード ジェネレーターとコード コンパイラーのインスタンスへのアクセスを提供します。

.NET Framework
サポート対象: 4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework クライアント プロファイル
サポート対象: 4、3.5 SP1

于 2013-01-14T13:48:34.997 に答える
1

CSharpCodeProvider のドキュメントから:

バージョン情報 .NET Framework サポート対象:

4.5、4、3.5、3.0、2.0、1.1、1.0

.NET Framework クライアント プロファイル サポート対象:

4、3.5 SP1

于 2013-01-14T13:48:53.877 に答える
1

私の知る限り、CSharpCodeProviderは単なるラッパーでcsc.exeありcsc.exe、.NET のすべてのデスクトップバージョンで利用できます (たとえば、Silverlight では利用できません)。

于 2013-01-14T13:49:01.473 に答える
0

他の回答に加えて、言語仕様は実際にはこのアセンブリに関連付けられているように見えるため、回答は「はい」になると思います。

参照:動的 (C# リファレンス) ( https://stackoverflow.com/a/2460934/211627に基づく回答)

于 2013-01-14T13:52:52.643 に答える
0

http://msdn.microsoft.com/en-us/library/microsoft.csharp.csharpcodeprovider%28v=vs.71%29.aspx

Google で最初にヒットしました。「その他のバージョン」をクリック

このクラス (したがってこの機能) が使用可能だったバージョンのリストが表示されます。

このクラスはバージョン 1.1 から利用可能だったようですが、Object クラスでさえそのバージョンに戻るため、おそらくすべてのバージョンであると言えます。

于 2013-01-14T13:48:21.647 に答える