目前我有一些动态生成的代码.换句话说,C#.cs文件是由程序动态创建的,目的是将此C#文件包含在另一个项目中.
挑战在于我想生成一个.DLL文件,而不是生成一个C#.cs文件,以便它可以被任何类型的.NET应用程序(不仅仅是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 ""; 
    }
总之,我想: