【问题标题】:C# dynamic creation of Assembly out of classesC# 从类中动态创建程序集
【发布时间】:2018-04-06 09:04:04
【问题描述】:

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

创建示例:

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

CompileAssemblyFromSource 需要一个字符串(类的表示形式)。

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

例子:

  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);

【问题讨论】:

  • 这个链接应该会有帮助:stackoverflow.com/questions/604501/…
  • 这正是我正在使用的方法。答案中的人使用“yourCodeAsString”,但这是罪魁祸首。
  • 在包含类定义的 .cs 文件上使用 File.ReadAllText?
  • 由于某种原因不起作用,我试过了,不会以这种方式创建程序集。

标签: c# class dll .net-assembly


【解决方案1】:

解决方案:

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

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

【讨论】:

    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    相关资源
    最近更新 更多