【发布时间】: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 或其他验证代码的工具中收到错误?