相关疑难解决方法(0)

在运行时动态生成DLL程序集

目前我有一些动态生成的代码.换句话说,C#.cs文件是由程序动态创建的,目的是将此C#文件包含在另一个项目中.

挑战在于我想生成一个.DLL文件,而不是生成一个C#.cs文件,以便它可以被任何类型的.NET应用程序(不仅仅是C#)引用,因此更有用.

.net c# dll code-generation

31
推荐指数
3
解决办法
4万
查看次数

如何以编程方式使用Roslyn编译C#文件?

我读到你无法使用CSharpCodeProvider编译C#6.0,因此尝试使用Roslyn.但我找不到一个很好的例子,如何加载文件,然后将其编译为DLL.

我应该如何使用Roslyn编写与此代码类似的内容?或者还有其他方法吗?现在,当我尝试编译包含对带有C#6.0代码的项目的引用的文件时,它只是说"命名空间'y'中不存在类型或命名空间名称'x'(您是否缺少程序集引用?)"

    public string CompileCode()
    {
        var provider = new CSharpCodeProvider();
        var outputPath = Path.Combine(Path.GetDirectoryName(_path), $"Code.dll");
        var compilerparams = new CompilerParameters(_referencedAssemblies, outputPath);
        CompilerResults results = provider.CompileAssemblyFromFile(compilerparams, _path);
        var dllPath = results.PathToAssembly;
        if (!results.Errors.HasErrors)
            return dllPath;
        PrintError(results.Errors);
        return ""; 
    }
Run Code Online (Sandbox Code Playgroud)

总之,我想:

  • 加载C#文件
  • 将它编译为一个DLL,以便我以后加载它.

c# roslyn

31
推荐指数
2
解决办法
1万
查看次数

标签 统计

c# ×2

.net ×1

code-generation ×1

dll ×1

roslyn ×1