我一直在看Visual Studio 14 CTP和C#6.0,并使用空传播操作符。 不过,我找不到为什么下面的代码不能编译。 function尚未logging,所以我不确定这是一个错误还是扩展方法根本不支持?. 操作员和错误信息是误导。 class C { public object Get() { return null; } } class CC { } static class CCExtensions { public static object Get(this CC c) { return null; } } class Program { static void Main(string[] args) { C c = null; var cr = c?.Get(); //this compiles […]
这里有一堆相关的问题 ,虽然大多数答案定义了 Roslyn和/或提供了一个“修复”一些问题( exe ,托pipe提供商等) 我似乎无法跟踪的是/bin/roslyn的“为什么”和“为了什么”(也许只在ASP.Net MVC / Web API的上下文中)。 我碰到类似的问题(托pipe – .exe限制,对4.6支持等),我的“修复”是“只部署到Azure” (当然,一切顺利)。 但是,真的,这不回答: 他们为什么需要? 这是否意味着它们被用于runtime编译(我的大脑指出这一点,但这是一个完整的猜测/我也许是错的grok),正如这个SOpost显示 – 除非纠正,这是“它”(更多下面)。 它似乎“删除包”是一个“修复” (根据一些过去的答案) , 但如果是这样,它(重新)乞求的问题 我认为理解这将有助于 – 例如我不能成为唯一一个看到.exe “需要”的眉毛。 更新 去显示“隐藏的gem”存在:)我已经读了一遍又一遍 …毕竟它已经有一段时间了 – 但不是评论线程。 大错误 – 这一直在盯着我(至less在这个交stream之后): Dmitry Dzygin 2015年6月2日上午12:53 我已经尝试了NuGet包的最新版本,但编译器加载/执行的方式似乎有所不同。 在v0.2.0.0版本中,Roslyn编译器将被加载到内存中,从而大大提高了不具有多个* .as * x / *。cshtml文件的预编译网站的性能。 然而,新版本的function是一个新的/bin/roslyn/csc.exe文件,每个文件执行一次,彻底删除了上面提到的优化function….. 金: XMao 2015年6月2日1:22 PM @Dmitry /bin/Roslyn csc.exe的工作是调用位于同一文件夹中的VBCSCompiler.exe 。 VBCSCompiler.exe是进行实际编译工作的进程。 […]
更新1: 将Visual Studio更新到版本2015更新2 RTM之后,问题仍然存在。 更新2修补程序可用4/12/2016 : 感谢Patrick Nelson。 一个补丁已经发布 你可以在这里下载补丁。 更新3 8/16/2016: 最新的vs 2015更新3 KB3165756有同样的问题不更新 使用的版本: 最新的稳定版本的Visual Studio更新2 rc 禁用了所有的分机,并重新启动了我的所有设置 重现步骤: 安装visual studio update 2 rc 使用asp.net mvc核心模板创build新项目 debugging应用程序 预期的行为: 为了能够debuggingasp.net应用程序 实际行为: 我无法探索visual studio编辑器或立即窗口中的variables的上下文,我在即时窗口中得到以下错误 错误CS0103:名称'myvariable'在当前上下文中不存在
在C#6中的string插值让我写: decimal m = 42.0m; string x = $"The value is {m}"; 但是,string格式化的一个非常常见的用例是指定用于格式化值的区域设置。 假设我需要使用InvariantCulture进行上面的格式化操作,那么这个语法是什么? 这个讨论表明我应该能够做到这一点: string x = INV($"The value is {m}"); INV被定义为 public static string INV(IFormattable formattable) { return formattable.ToString(null, System.Globalization.CultureInfo.InvariantCulture); } 但是,这不起作用。 它编译,但它启动时离开我的程序挂在cmd.exe – 如果klr.exe,我假设被调用,挂起(编译器错误?) 这是VS15 CTP 6中的ASP.NET 5控制台项目。
C#编译器是用C ++编写的吗?
使用Roslyn,我想在实际编译之前修改我的C#代码。 现在,我只需要像这样的东西: [MyAnotatedMethod] public void MyMethod() { // method-body } 并且基于注解,我想在方法的开始处和方法的末尾注入一些代码。 我知道PostSharp,但这不是我想要的。 这可能与Roslyn有关吗? 如果是的话,你能举个例子吗?
当在Roslyn中引入操作时,其中一个目标就是提供降低的操作(我认为这是在devise审查会议video中),据我所知应该为高级隐式编译器操作提供显式操作。 我在Roslyn看到降低目录,但是课程在那里。 现在有可能降低操作或没有公共API可用? 在下面的示例操作中,已经删除了一些隐式部分 – 为expression式主体添加return语句,并为重载操作符显示符号。 但是前后增量仅仅因种类而异。 using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Semantics; using System.Linq; namespace so39468373 { internal static class Program { private static void Main() { var tree = CSharpSyntaxTree.ParseText(@" public class c { public static c operator ++(co) { return o; } static c pre(co) => ++o; static c post(co) […]
我已经看了很长一段时间罗斯林 ,我很好奇,兴奋。 我注意到的一件事是他们提到编译器被重写成托pipe代码。 这就提出了Roslyn是否能够在非.NET虚拟机(如Mono)上运行的问题。 我真的很喜欢在我的video游戏中使用RoslynembeddedC#脚本,并且在我的应用程序中使用了许多其他function,但是我想知道是否使用Roslyn将打破它在Mono上运行的能力。 有没有人试过在Mono上运行Roslyn? 可能吗? 为什么或者为什么不? 为了澄清,我对是否可以在单声道上运行托pipe程序集以及是否可以生成单声道可以运行的程序集感兴趣。
我正在尝试使用Visual Studio 2015和.NET 4.5.1来创buildWeb应用程序。 当我发布网站时,visual studio创build一个名为roslyn文件夹。 我知道这是用来编译代码,但不幸的是我的主机提供商不允许我在他们的服务器上执行编译器。 如何发布没有像以前版本的Visual Studio roslyn的网站? 编辑:我试图访问我的网站时,出现此错误。 它似乎IIS试图执行roslyn\csc.exe但我的用户帐户没有权限做到这一点。 使用以前版本的Visual Studio,此错误不显示。
在Visual Studio 2013中,我使用代码分析窗口向开发和pipe理团队提供报告。 在Visual Studio 2015 Enterprise RTM中,这些错误已返回到错误窗口,我不再只能看到单个项目的CA问题,或者按types对它们进行过滤。 有没有办法让代码分析窗口回来?