C# 动态创建程序集 类

C# dynamic creation of Assembly out of classes

如何从多个 classes 中的代码动态创建 .dll?

创建示例:

 var test = CodeDomProvider
   .CreateProvider("CSharp")
   .CompileAssemblyFromSource(parameters, "public class MyClass { ... }");

CompileAssemblyFromSource 需要一个字符串(class 的表示)。

我不想在生成的程序集中以字符串形式提供每个 class,所以我想在创建时传递它们。

示例:

  public class MyClass
  {
    [DataMember(Order = 1)]
    public bool Valid{ get; set; }

    [DataMember(Order = 1)]
    public string SomeText{ get; set; }
  }

有没有类似的

var test = CodeDomProvider
  .CreateProvider("CSharp")
  .CompileAssemblyFromSource(parameters, MyClass);

解决方案:

将 "ReferencedAssemblies" 添加到作为第一个参数传递给 CompileAssemblyFromSource 的参数中。

var parameters = new CompilerParameters
      {
        GenerateExecutable = false,
        OutputAssembly = MY_ASSEMBLY,
        ReferencedAssemblies = {"System.Core.dll", "System.ServiceModel.dll"}
      };