私はCodeDomProviderを使用してメモリ内のC#コードをコンパイルし、コードを実行しています。コンソールアプリケーションでコードを実行すると、すべてうまく動作します。それがコンパイルされ、実行して結果を得ることができます。CodeDomProvider Webプロジェクトでコード生成に失敗しますが、コンソールアプリケーションではありません
しかし、この同じコードは、Webアプリケーション内で実行しようとすると失敗します。私はBadImageFormatExceptionを取得し、内部例外はBad IL Formatです。
私が気付いていないWebアプリケーションとコンソールアプリケーションにはいくつかの制限がありますか?
ありがとうございます。
私は.NET 4.0を実行しています。
編集:プロジェクトから別のアセンブリへの参照を追加するまで、すべてが機能していることに気付きました。だから私は私のエンティティモデルを含むプロジェクト参照を持つクラスライブラリを持っています。私はちょうど私のクラスは文字列を返した後、すべての作品をMyApp.Data.dllへの追加の参照を削除し、単一のメソッドを持たせる場合は
CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
CompilerParameters cp = new CompilerParameters();
cp.GenerateInMemory = true;
cp.ReferencedAssemblies.Add("mscorlib.dll");
cp.ReferencedAssemblies.Add("System.dll");
cp.ReferencedAssemblies.Add("System.Core.dll");
cp.ReferencedAssemblies.Add("System.Data.Linq.dll");
cp.ReferencedAssemblies.Add("System.Data.Entity.dll");
cp.ReferencedAssemblies.Add("MyApp.Data.dll");
var results = provider.CompileAssemblyFromSource(cp, source);
var assm = results.CompiledAssembly;
:私は、同様の参照としてそれを追加しています。私はその参照を追加するとすぐに失敗します。
アイデア?
ありがとうございました。私はそれが何か簡単だと思っていた。 :)私はすぐにいくつかのコードを掲載します。 – Bryant