PCL DomCompiler可移植类库输出

时间:2015-11-16 16:33:42

标签: c#

我的一个项目中有以下代码片段,它从给定的.cs文件输出.dll。

现在,我想输出一个可移植的类库而不是标准库,但不知道如何更改输出类型。

我读取输出类型只是.csproj的一部分,但我没有.csproj这种编译方式.dll。

    CSharpCodeProvider provider = new CSharpCodeProvider();
    CompilerParameters cp = new CompilerParameters();
    cp.OutputAssembly = "myassemblyname.dll";
    cp.GenerateInMemory = false; 
    cp.IncludeDebugInformation = true; 
    CompilerResults cr = provider.CompileAssemblyFromFile(cp, new String[] { "MySourceFile.cs", codeFile });

    if(cr.Errors.Count > 0) {
        Console.WriteLine("Errors building {0}", cr.PathToAssembly);
        foreach(CompilerError ce in cr.Errors) {
            Console.WriteLine("  {0}", ce.ToString());
            Console.WriteLine();
        }
    }
    else
        Console.WriteLine("Source {0} built into {1} successfully.", codeFile, cr.PathToAssembly);
}

任何人都知道如何指示CSharpCodeProvider输出可移植类库(PCL)

2 个答案:

答案 0 :(得分:1)

根据this回答,您应该pass the right assembly referencesCompilerParametersset CompilerParameters.GenerateExecutable属性为false才能生成dll。

要找出正确的引用,您可以通过IDE构建PCL,只需查看“输出”窗口。

答案 1 :(得分:0)

最后,我们切换了这个特定项目的构建方法,它现在只是跟随.csproj。但我们添加正确的CompilerParameters.ReferencedAssemblies的测试似乎有效,所以标记为答案。

20:20-hindsight-remark:生成代码并要求构建编译项目现在看起来不那么令人头痛。毕竟尖尖的clicky界面并不是那么糟糕。