我想尝试一下潜在的C#7未来语言功能。
我有一个虚拟机,我已经下载了Roslyn代码库(功能/模式分支),并按照Roslyn的github所述构建:Building and Testing on Windows。
我可以成功启动一个新的Visual Studio实验实例(将VisualStudioSetup设置为启动项目并运行)。
当我尝试新的语言功能(模式匹配和本地函数)时,我在编辑器中出现错误,并且在构建时也出错:
错误CS8058功能'本地功能'是实验性的 不支持的;使用'/ features:localFunctions'来启用。
错误CS8058功能'模式匹配'是实验性的 不支持的;使用'/ features:patterns'来启用。
我在哪里提出这些选项?
我尝试将其添加到命令行参数中,但是我收到错误。
答案 0 :(得分:5)
我还没有修复bug 7812。遗憾。
在内部,编译器团队主要通过单元测试或命令行编译器来测试事物;如果我们确实需要测试IDE,我们只需删除传入功能标记的检查。
答案 1 :(得分:4)
抱歉,我没有使用您下载的代码完成R& D.
但是在Visual Studio'15'预览版中(2016年3月30日宣布)我已经很容易解决了这个问题。这可能对其他人有所帮助。
我收到了错误
错误CS8058功能“本地功能”是实验性的,不受支持;使用'/ features:localFunctions'来启用。
要解决此问题,请选择您的项目名称,然后右键单击>>属性窗口>>然后建立 在“条件编译符号”文本框中添加以下两个选项 __ DEMO __,__ DEMO_EXPERIMENTAL __
点击“保存”按钮进行保存。现在构建您的应用程序,您的构建将成功。
即使在我的最后,如果我添加任何一个 __ DEMO__& __DEMO_EXPERIMENTAL __ 然后它工作正常。
答案 2 :(得分:3)
我找到了启用新语言功能的方法。
通过跟踪我发现进行特征检查的代码(函数IsFeatureEnabled)并将其更改为始终返回true。
然后我像以前一样从命令行重建。之后,当我启动实验性Visual Studio实例时,将启用新的语言功能。
在:
在:
internal bool IsFeatureEnabled(MessageID feature)
{
// Force all demo features:
return true;
// in "demo" mode enable all language features.
if (PreprocessorSymbols.Contains("__DEMO__"))
{
return true;
}