CSharpCodeProvider использует C# язык версии 7.1 или выше - PullRequest
1 голос
/ 27 марта 2020

У меня небольшой консольный проект, в котором я пытаюсь скомпилировать некоторые C# файлы в .dll.

Код выглядит так:

    public Result CreateDll(string[] files, string assemblies, string toPath, string dllName)
    {
        if (!Directory.Exists(toPath))
            Directory.CreateDirectory(toPath);

        using (var provider = new Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider(new CompilerSettings()))
        {
            var parameters = new CompilerParameters(assemblies)
            {
                GenerateInMemory = false,
                GenerateExecutable = false,
                OutputAssembly = $@"{toPath}\{dllName}.dll",
                IncludeDebugInformation = false,
                TreatWarningsAsErrors = true,
                CompilerOptions = "/unsafe /optimize"
            };

            CompilerResults results = provider.CompileAssemblyFromFile(parameters, files);
        }

        return Result.Success;
    }

Один из файлов Я пытаюсь скомпилировать выглядит так:

    public abstract class BaseClass
{
    private string backendString;
    private string property;
    public string TestString => backendString;

    public string Property
    {
        get => property;
        set
        {
            if (value == default)
                return;
            property = value;
        }
    }
}

Но я получаю эту ошибку:

Функция 'литерал по умолчанию' недоступна в C# 7.0. Пожалуйста, используйте языковую версию 7.1 или выше.

Если я удалю *default* из BaseClass, то он не будет жаловаться. Как мне это изменить?

1 Ответ

2 голосов
/ 27 марта 2020
CompilerOptions = "/unsafe /optimize /langversion:7.1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...