无法从不同项目C#编译文件

问题描述 投票:0回答:1

我想使用 CSharpCodeProvider 编译另一个项目

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

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

输出错误为:error CS1504: Source file 'c:\Users\User\Documents\Visual Studio 2017\Projects\CurrentDirectory in\DebugargetClass.cs' 无法 打开('系统找不到指定的文件。')

c# .net
1个回答
0
投票

文件的路径使用

/
作为路径分隔符。在 Windows 上,路径分隔符是
\
。尝试用这个代替:

CompilerResults results = codeProvider.CompileAssemblyFromFile(parameters, new string[] { @"..\..\..\targetDirectory\targetClass.cs" });
© www.soinside.com 2019 - 2024. All rights reserved.