C # - компилировать код C # во время выполнения с пользовательской конфигурацией - PullRequest
0 голосов
/ 24 января 2019

У меня есть вопрос, может ли CodeDom Compiler скомпилировать код c # с пользовательской конфигурацией, такой как x64 или x86 bit. По умолчанию он компилирует код c # в .exe с конфигурацией «Любой ЦП».Компилируем код c #:

public static string BCS(string[] sources,string[] libs,string outPath,bool exef)
    {
        CSharpCodeProvider codeProvider = new CSharpCodeProvider();
        CompilerParameters parameters = new CompilerParameters(libs);
        parameters.GenerateExecutable = exef;
        parameters.OutputAssembly = outPath;
        CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, sources);

        if (results.Errors.Count > 0)
        {
            string errsText = "";
            foreach (CompilerError CompErr in results.Errors)
            {
                errsText = "("+CompErr.ErrorNumber +
                            ")Line " + CompErr.Line +
                            ",Column "+CompErr.Column +
                            ":"+CompErr.ErrorText + "" +
                            Environment.NewLine;
            }
            return errsText;
        }
        else
        {
            return "Success";
        }
    }

Думаю, вы понимаете мой вопрос, если нет, оставьте комментарий, я дам подробности.

1 Ответ

0 голосов
/ 24 января 2019

Попробуйте установить CompilerOptions таким образом

parameters.CompilerOptions = "-platform:anycpu32bitpreferred";

используя параметры из этой ссылки

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/platform-compiler-option

P.S. CSharpCodeProvider использует csc.exe

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/command-line-building-with-csc-exe

...