【发布时间】:2017-09-27 12:02:23
【问题描述】:
SQLCLR Visual Studio 2015
我是编写 CLR 代码的新手。
编译 SQL CLR 函数时出现以下错误
我正在使用.Net Coordinates library。
有问题的代码是
public Datum.Datum Datum { get; }
在 C# 控制台应用程序(不是 CLR)中编译时,相同的库可以使用 Visual Studio 2015 成功构建和执行。
我的理解是,通过使用 Visual Studio,我使用的是 C# v6。
.sqlproj 是否会强制使用 C# 的早期版本?
【问题讨论】:
-
如果您从主菜单中单击项目,是否有“启用 c#6”选项?
-
该属性为自动属性,只有get。如果它没有设置或任何返回某些东西的逻辑,你如何期望它返回任何东西。这就是您看到此错误的原因。如果您打算从类内部设置此属性的值,那么您可以在属性中声明私有集。或者在 get 中有一些逻辑来返回一些值。
-
@ChetanRanpariya C# 6 允许在没有设置器的情况下声明自动属性,例如可以在 ctor 中分配它们。
-
'{ get; 怎么样?私人集;}'?
-
如果您打开项目属性,选择“SQLCLR Build”选项卡并打开“Advanced...”,您可以从下拉列表中选择语言版本。如果您从“default”更改为“ C# 6.0”并重新编译,您将收到错误消息“/langversion 的选项 '6' 无效;必须是 ISO-1、ISO-2、3、4、5 或默认值”。这表明构建使用的是较旧的
csc.exe编译器,而不是 Visual Studio C# 编译器。我怀疑您需要编辑一些与 SQL 相关的.targets文件,以使其使用更好的csc.exe版本。
标签: c# sql-server visual-studio-2015 sqlclr c#-6.0