【问题标题】:CSharpCodeProvider use C# language version 7.1 or greaterCSharpCodeProvider 使用 C# 语言版本 7.1 或更高版本
【发布时间】:2020-07-08 05:52:32
【问题描述】:

我有一个小型控制台项目,我正在尝试将一些 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 或更高版本的语言。

如果我从BaseClass 中删除*default*,那么它不会抱怨。 我该如何更改?

【问题讨论】:

  • 你有一个默认值为零的整数。
  • 所以重点是,default 的使用让我很崩溃,因为我使用了错误的 c# 语言版本
  • 这不是错误的状态。您是否从 Visual Studio 或其他验证代码的工具中收到错误?

标签: c# .net


【解决方案1】:
CompilerOptions = "/unsafe /optimize /langversion:7.1"

【讨论】:

    猜你喜欢
    • 2016-06-11
    • 2022-11-08
    • 2018-01-22
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    相关资源
    最近更新 更多