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#?
答案 0 :(得分:1)
主要问题似乎是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 Corporation。版权所有。此编译器作为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
答案 1 :(得分:0)
如果您不想使用C#6,请使用私有支持字段实现getter:
public Datum.Datum Datum { get {return _datum; } }
private Datum.Datum _datum;
在类中的某处设置_datum
的值(ctor,init方法,......)。