私が達成しようとしているのは、私が生成したC#クラスからプロジェクトを動的に生成することです。 このクラスのコンテンツは、次のように実体framework.Theコンテンツのコード最初のコード生成の同様のコンテンツが見えます:ファイルからアセンブリをコンパイルするときにネームスペースが見つかりません
namespace ElasticTables
{
using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations.KeyAttribute;
[Table("address")]
public partial class address
{
[Key]
public decimal id { get; set; }
public string name { get; set; }
}
}
私は私のデータベース内のテーブルからこのファイルを生成し、その後、プログラムをコンパイルしよう生成されたプロジェクトをAPIで動作する別のプロジェクトで参照することができます。
主なエラーをコンパイル中には、次のとおりです。
は型または名前空間名「KeyAttribute」が「System.ComponentModel.DataAnnotations」の名前空間に存在しない
(あなたはアセンブリ参照が不足しています?)タイプまたは名前空間 'Key'が見つかりませんでした
タイプまたは名前空間 'テーブル'が見つかりませんでした。
私は「CSharpCodeProvider」
var provider = new CSharpCodeProvider();
var options = new CompilerParameters
{
OutputAssembly = "ElasticTables.dll",
CompilerOptions = "/optimize"
};
を使用していると私は、次のように参照アセンブリ
options.ReferencedAssemblies.Add(Directory.GetCurrentDirectory() + "\\EntityFramework.dll");
options.ReferencedAssemblies.Add(Directory.GetCurrentDirectory() + "\\EntityFramework.SqlServer.dll");
私はソースと呼ばれるファイルのパスを持つ文字列配列を持っている、と私は試してみます次の行でコンパイルします。
CompilerResults results = provider.CompileAssemblyFromFile(options, sources);
ヘルプは大歓迎です。約
options.ReferencedAssemblies.Add("System.dll");
options.ReferencedAssemblies.Add("System.ComponentModel.DataAnnotations.dll");
その他が必要になる可能性があります
:
、アセンブリが作成されたディレクトリに? 'OutputAssembly'パラメータで指定しますか?ありがとう。 –