私はCodeDomProvider to compile some Linq codeを使用しており、動的にクエリを実行しています。しかし、私は非常に奇妙な問題にぶつかっています。特定のLinq構文でCodeDomProviderコードの生成に失敗する
このすべての作品のように生成されたコードの私のLINQクエリに見える場合:
namespace Dynamic
{
using System.Linq;
using System.Collections.Generic;
public static class Query
{
public static int GetRecords()
{
MyData.Data.DataMart container = new MyData.Data.DataMart();
return (container.EventDetails).Count();
}
}
}
これは、コンパイルし、うまく動作します。私は、次のLINQクエリを変更した場合しかし、それはコンパイルに失敗します。
return (from e in container.EventDetails select e).Count();
私はこのように静的コードを置けばそれは正常に動作しますが、私はCodeDomProviderでそれをコンパイルしようとするならば、それが失敗した(と私なぜ失敗するのかについてのエラーメッセージを得る良い方法が見つかっていない)。私はlinqクエリを生成するのが簡単になるので、from-in-selectスタイルの構文を使用したいと思いますが、なぜそれらがコンパイルされていないのかわかりません。
このスニペットをコンパイルするために使用するコードの一部は、この記事の一番上にあるリンクからご覧いただけます。
ありがとうございます!
編集:ポストからコードをコピー私はリンクへ:
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;
EDIT2:は限り例外が行くように、私は、コードの最後の行(VARに2番目の例外を取得結果= ...)。
またはその依存関係の 1「 バージョン= 4.0.0.0、文化=中立、なPublicKeyToken = b77a5c561934e089、システムからロードされた0バイト」ファイルまたはアセンブリをロードできませんでした:例外がBadImageFormatExceptionです。試みはあなたのコードが実際に有効なアセンブリにコンパイルされていないので、あなたはおそらく
BadImageFormatException
を取得している 間違ったフォーマット
私たちがここで解決すべき問題?コンパイルしようとすると、エラー情報を得ることができないという事実はもっと重要です。コンパイルコードを含めることはできますか? –
私は両方の問題を同時に解決するエラー情報を私に得ることができると思います。 :) MyApp.Data.dllには、自分のEntity Frameworkエンティティが含まれています。 – Bryant
[CodeDomProviderコード生成はWebプロジェクトでは失敗しますが、コンソールアプリケーションでは失敗します](http://stackoverflow.com/questions/9577139/codedomprovider-code-generation-fails-in-web-project-but-not-console- app) –