草庐IT

c# - Roslyn 和 .NET 运行时版本

这个问题在这里已经有了答案:DoesC#6.0workfor.NET4.0?(5个答案)关闭6年前。是否可以将Roslyn编译器和C#6.0的新功能与旧版本的.NET运行时(例如.NET4.0)一起使用?例如,我想使用表达式主体成员(intS=>x+y;而不是intS{get{returnx+y;}})在.NET4.0应用程序中。

c# - 是否可以使用 .NET Core Roslyn 编译器编译单个 C# 代码文件?

在旧的.NET中,我们曾经能够运行csc编译器来编译单个.cs文件或多个文件。对于.NETCore,我们有dotnetbuild坚持要有一个合适的项目文件。是否有独立的命令行编译器允许在没有项目的情况下编译源代码文件(并在同一命令行上列出引用的依赖项)?在Linux上,当我安装了旧的csc和新的.NETCore时,我得到了这些计时:[root@li1742-80test]#timedotnetbuildMicrosoft(R)BuildEngineversion15.3.409.57025for.NETCoreCopyright(C)MicrosoftCorporation.Allri

c# - Roslyn 编译器用零优化函数调用乘法

昨天我在我的C#代码中发现了这个奇怪的行为:Stacks=newStack();s.Push(1);//stackcontains[1]s.Push(2);//stackcontains[1|2]s.Push(3);//stackcontains[1|2|3]s.Push(s.Pop()*0);//stackshouldcontain[1|2|0]Console.WriteLine(string.Join("|",s.Reverse()));我假设程序会打印1|2|0但实际上它打印了1|2|3|0。查看生成的IL代码(通过ILSpy),您可以看到s.Pop()*0被优化为简单的0://

c# - Roslyn 没有引用 System.Runtime

我正在开展一个项目,我们正在使用Roslyn为我们编译一些模板。现在,当我编译模板时,我在CompileResult.Diagnostics中收到多个错误.错误是:(21,6):errorCS0012:Thetype'System.Attribute'isdefinedinanassemblythatisnotreferenced.Youmustaddareferencetoassembly'System.Runtime,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a'.(21,6):errorCS0012

c# - 如何禁用所有 Roslyn 代码分析器?

我正在尝试使用一个大型开源项目,该项目具有一些Roslyn代码分析器。当我打开解决方案时,VisualStudio使用大约35%的CPU大约15分钟。使用PerfView,我发现在解决方案上运行的代码分析器使VisualStudio停滞不前。我知道可以在每个项目的基础上禁用分析器,但此解决方案包含100多个项目,所以我不想一个一个地执行此操作。我的问题:我可以为给定的解决方案禁用所有Roslyn分析器以避免这种情况吗?我可以为VisualStudio中的所有解决方案禁用所有Roslyn分析器吗? 最佳答案 您可以在每个项目的基础上禁

c# - 使用 Roslyn 解析/转换/生成代码 : am I aiming too high, 还是太低?

(我想做的是通过从vs生成的设置文件生成接口(interface)和包装类来解决Application.Settings/MVVM问题。)我想做的是:从文件中解析类声明仅根据类的(非静态)属性生成接口(interface)声明生成一个实现此接口(interface)的包装类,在构造函数中获取原始类的一个实例,并将所有属性“通过管道”传递给该实例。生成另一个直接实现接口(interface)的类。我的问题有两个:我是不是找错了树?为此或部分使用Code-Dom、T4、Regex(!)会更好吗?(我不介意做一些额外的工作,因为这主要是一种学习体验。)如果Roslyn是可行的方法,我应该关注

c# - 如何使用 Roslyn 读取 XML 文档注释

我希望能够在使用Roslyn解析C#源代码时阅读XML文档注释。//////Documentation...///我尝试在ParseOptions中设置ParseDocumentationComments,但似乎没有效果?varparseOptions=ParseOptions.Default.WithParseDocumentationComments(true);SyntaxTreeunit=SyntaxTree.ParseFile(file,parseOptions); 最佳答案 您需要:查看包含XML文档注释的语法的Lead

c# - 如何使用 Roslyn 编译 C# 解决方案?

我有一款软件可以根据用户操作为C#项目生成代码。我想创建一个GUI来自动编译解决方案,这样我就不必为了触发重新编译而加载VisualStudio。我一直在寻找机会尝试使用Roslyn,并决定尝试使用Roslyn而不是msbuild来执行此操作。不幸的是,我似乎找不到任何关于以这种方式使用Roslyn的好资源。谁能指出我正确的方向? 最佳答案 您可以使用Roslyn.Services.Workspace.LoadSolution加载解决方案。完成后,您需要按依赖顺序遍历每个项目,获取项目的Compilation并对其调用Emit。您可

c# - 如何以编程方式使用 Roslyn 编译 C# 文件?

我读到您无法使用CSharpCodeProvider编译C#6.0,因此尝试使用Roslyn。但是我找不到如何加载文件然后将其编译为dll的好示例。我应该如何使用Roslyn编写类似于此代码的内容?或者还有其他方法吗?现在,当我尝试使用C#6.0代码编译包含对项目的引用的文件时,它只是说“类型或命名空间名称‘x’在命名空间‘y’中不存在(您是否缺少程序集引用?)”publicstringCompileCode(){varprovider=newCSharpCodeProvider();varoutputPath=Path.Combine(Path.GetDirectoryName(_p

c# - 如何在 visual studio 2015 中使用 roslyn c# 编译器?

我对roslyn有点困惑。我做了什么:我已经安装了vs2015communityedition并在extensibilty>downloadcompilerplatformsdk下载。所以我创建了一个简单的控制台应用程序:helloworld示例。好吧,现在我希望在vs2015默认编译器和roslyn之间选择c#编译器...,但我没有找到这样的选项。所以我的第一个问题是:如何选择C#编译器的版本?其次,我下载了master-roslyn并构建,然后我找到了csc.exe,奇怪的是,如果我启动exe我得到c#编译器版本42.42.42.42。???对吧?然后我学习了一些教程,但都是为了我