繁体   English   中英

自动实现的属性必须同时定义 get 和 set 访问器

[英]Automatically implemented properties must define both get and set accessors

SQLCLR Visual Studio 2015

我是编写 CLR 代码的新手。

编译 SQL CLR 函数时出现以下错误

编译器错误

我正在使用.Net Coordinates 库

有问题的代码是

public Datum.Datum Datum { get; }

在 C# 控制台应用程序(不是 CLR)中编译时,相同的库使用 Visual Studio 2015 成功构建和执行。

我的理解是,通过使用 Visual Studio,我使用的是 C# v6。

.sqlproj 是否会强制使用早期版本的 C#?

主要问题似乎是 Visual Studio 和 .NET Framework/CLR 之间的脱节。 Visual Studio 似乎可以更新为使用较新版本的 C#,独立于您的计算机上实际存在的任何新版本。

不应该需要指定高级SQLCLR生成属性使用C#6.0,但这样做给你一个错误消息见地:

/langversion 的选项“6”无效; 必须是 ISO-1、ISO-2、3、4、5 或默认

查看输出消息(假设足够高的级别)它应该表明您正在使用C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\Csc.exe ,所以它似乎没有.sqlproj文件或 SSDT 在这里强制执行任何操作。 但是,如果您转到命令提示符,转到包含Csc.exe的文件夹并直接运行它(即在提示符下只运行Csc ),您应该看到以下注释:

Microsoft (R) Visual C# 编译器版本 4.6.1590.0
对于 C# 5
版权所有 (C) 微软公司。 版权所有。

此编译器作为 Microsoft (R) .NET Framework 的一部分提供,但仅支持最高 C# 5 的语言版本,该版本不再是最新版本。 有关支持更新版本的 C# 编程语言的编译器,请参阅http://go.microsoft.com/fwlink/?LinkID=533240

该链接会将您带到 Roslyn 的 GitHub 存储库。 为方便起见,这里是该页面的直接链接,从下载编译器部分开始,无需下载 Visual Studio(因为您已经拥有了):

https://github.com/dotnet/roslyn#download-c-and-visual-basic

如果您不想使用 C# 6,请使用私有支持字段实现 getter:

public Datum.Datum Datum { get {return _datum; } }
private Datum.Datum _datum;

在类中的某处设置_datum的值( _datum 、初始化方法等)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM