2017-08-27 94 views
0

我想从另一个使用CSharpCodeProvider无法编译来自不同项目的C#文件

是编译器看到在当前目录中的目标类的问题

CompilerParameters parameters = new CompilerParameters 
{ 
    GenerateExecutable = true, 
    IncludeDebugInformation = true, 
    GenerateInMemory = false, 
    TreatWarningsAsErrors = true, 
    WarningLevel = 3, 
    CompilerOptions = "/optimize", 
    OutputAssembly = "Output.exe", 
}; 
CSharpCodeProvider codeProvider = new CSharpCodeProvider(); 

CompilerResults results = codeProvider.CompileAssemblyFromFile(parameters, new string[] { "../../../targetDirectory/targetClass.cs" }); 
var warnings = from e in results.Errors.Cast<CompilerError>() 
    where e.IsWarning 
    select e; 


var errors = from e in results.Errors.Cast<CompilerError>() 
    where !e.IsWarning 
    select e; 

foreach (var warning in warnings) 
{ 
    Console.WriteLine(warning); 
} 
Console.WriteLine("=========="); 
foreach (var error in errors) 
{ 
    Console.WriteLine(error); 
} 

输出误差是编译:错误CS1504:源文件 'c:\ Users \ User \ Documents \ Visual Studio 2017 \ Projects \ CurrentDirectory \ bin \ Debug \ targetClass.cs'不能为 opened('系统找不到指定的文件'。)

回答

0

该文件的路径使用/作为路径分隔符。在Windows上,路径分隔符是\。尝试使用此代替:

CompilerResults results = codeProvider.CompileAssemblyFromFile(parameters, new string[] { @"..\..\..\targetDirectory\targetClass.cs" });