Quiero compilar un proyecto de otro usando CSharpCodeProvider
El problema es que el compilador ve la clase de destino en el directorio actual
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);
}
El error de salida es: error CS1504: No se pudo abrir el archivo de origen 'c: \ Users \ User \ Documents \ Visual Studio 2017 \ Projects \ CurrentDirectory \ bin \ Debug \ targetClass.cs' ('El sistema no puede encontrar el archivo especificado. ')
La ruta al archivo se utiliza /
como separador de ruta. En Windows, el separador de ruta es \
. Intente usar esto en su lugar:
CompilerResults results = codeProvider.CompileAssemblyFromFile(parameters, new string[] { @"..\..\..\targetDirectory\targetClass.cs" });
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras