问题标签 [roslyn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 Roslyn 2012 年 6 月 CTP 在 Visual Studio 2012 RC 中更改 C# 交互式窗口的字体和颜色
默认设置适用于浅色主题,但在深色设置下,默认消息文本保持黑色(实际上错误消息文本颜色也保持不变,但它是红色的,所以没关系)。基本上它看起来与相关问题中的完全一样,但在这种情况下,我使用的是 VS 2012。
c# - 使用 Roslyn June CTP 2012 生成动态 LINQ 时出错
以前我写了一个程序,使用 Mono 编译器作为服务
//输出
55
现在尝试使用Roslyn做同样的事情(我的第一个代码)[Roslyn 项目类型:控制台应用程序]
但是得到这个错误
“(1,34):错误CS8000:此语言功能('带有初始化程序的对象创建表达式')尚未在Roslyn中实现。”
请帮忙
c# - C# 交互式窗口可以与我的代码交互吗?
在 Visual Studio 2015 或更高版本中,我可以打开“C# 交互窗口”并运行代码:
那很可爱。现在我如何交互我的代码——我的类?假设我有一个打开的项目。
c# - Roslyn VisualBasic.ScriptEngine 无法识别用 C# 编写的 hostObject
我们的项目需要能够有一个简单的业务规则,我们的客户可以在 Visual basic 中编写脚本。虽然我们的主程序是用 C# 编写的
客户想要执行的脚本可能是这样的(我正在考虑最简单的情况)
所以我在 C# 中创建了一个带有 Code 和 MappedCode 属性的 RowData 类
我创建了一个简单的主机对象类,例如
使用 Roslyn.Scripting.VisualBasic.ScriptEngine 我创建一个引擎,创建一个带有 HostObjectModel 实例的会话并执行 engine.Execute(vbCode, session)
它告诉我
(2,25):错误 BC30451:未声明“行”。由于其保护级别,它可能无法访问。
但是如果我在 C# 上创建类似的代码片段
并使用 CSharp.ScriptEngine 一切都会正常工作
那么,有什么问题,为什么 VisualBasic.ScriptEngine 看不到用 C# 编译的类的公共属性,我认为应该是基于相同的 MSIL 语言,还是我错了?
更新:我安装了 Visual Basic 并在 VB 上创建了 ScriptModel 库。我还在类声明和 vbCode 中用 Row() 函数替换了 Row 属性。都没有帮助。:( 当我从 C# 运行 VisualBasic.ScriptEngine 时,它似乎根本不起作用。
c# - 从一开始就建立 IDocument 的最有效方法是什么
我想使用以下类作为具体示例逐步构建一个新的 IDocument 对象。您可以从您喜欢的任何对象开始并使用您喜欢的任何中间对象,只要生成的对象是最后代表完整类的 IDocument。
第 1 步:添加一个名为 MyNamespace 的新命名空间。此时打印出当前对象应如下所示:
步骤#2:向这个命名空间添加一个名为 MyClass 的新类。此时打印出当前对象应如下所示:
步骤#3:向这个类添加一个名为 MyMethod 的新方法。此时打印出当前对象应如下所示:
我遇到的问题是,理论上你可以用无数种方法来解决这个问题,或者至少错误地认为你可以解决这个问题。各种不同对象(如 WithChanges、UpdateDocument、各种 Syntax 对象上的方法、ParseCompilationUnit 等)中的无尽方法和构造函数。
基本上,我想以增量方式构建它,每一步都有一个不同的对象,例如我可以打印到控制台,而不是一个大语句在一行中创建整个事情。我已经多次阅读 CTP 6 月版本附带的所有文档,正如我所提到的,我迷失在看似无穷无尽的各种构造函数和方法的组合中。此外,我对一种也考虑性能的方式感兴趣。
.net - 又名 infoof 的财产——通过 Rosyln?
几年前,Eric Lippert写了一篇关于假设的 infoof 运算符的博客,它允许您在编译时而不是在运行时获取方法/属性信息。基本上说这是一匹漂亮的小马,但没有独角兽......
我读了一些关于 Rosyln 在编译时重写代码的能力,使用 Roslyn 实现 infoof 有多难?
编辑:我认为这可能是获取 Eric 所说的所有内容的一种方式,但如果不是,我应该稍微分解一下这些功能。
- 获取属性名称。
- 获取属性类型。
- 获取属性访问器。
- 获取方法名称。
- 得到他所说的infoof的一切......
以重构安全的方式,在编译时得到验证。就我个人而言,1 涵盖了我实际使用的大约 90%(用于获取呼叫者姓名的新呼叫者信息属性实际上可以涵盖大约 60%,但当然,如果有一种方法可以在该方法的内部和外部工作,这将是可取的)。
c# - 使用 Roslyn 获取方法参数
我可以使用以下代码从对特定方法的所有调用的解决方案中获取列表:
但这给了我一个ReferencedSymbol
. 虽然这给了我调用该方法的文件和行号,但我还想获得调用该方法的特定参数。我怎样才能转换我拥有的东西或获得与 Roslyn 相同的信息?(请注意,我首先使用该方法加载解决方案,Solution.Load
然后循环查找该方法的定义/声明位置(createCommandList
))。
c# - 在 C# 编辑器窗口中的当前位置查找项目的类型
我正在编写 Visual Studio intellisense 的扩展,并希望在 C# 编辑器中获取光标之前的项目类型。
我目前有一个ITextBuffer
可以用来获取当前源文件的文件。
我还可以获得编辑器中的当前位置,如下所示:
但是我不太确定如何检测编辑器中当前光标后面的项目的类型。我试过使用 Roslyn,但看起来这应该比这更简单。Roslyn 是执行此操作的最佳工具(通过编译文档并导航到文档中的正确位置)还是有更好的方法。
下面是我尝试使用 Roslyn 查找项目的类型:
c# - 使用 Roslyn 将自动实现的属性添加到类
我试图通过从头开始构建一个现有但简单的应用程序来学习 Roslyn,这似乎是一种有效的学习方式。无论如何,我有以下代码:
在 IDocument 中输出以下代码。
虽然它应该看起来更像这样(注意我尝试添加 Timer 属性)
此外,我为这样一个简单的过程编写的代码似乎过分了。除了我的主要问题之外,人们能否就我如何以更优雅的方式解决这个问题提出建议?也许是博客的链接,或者代码片段之类的?
事实证明,我需要更改这一行:
到这一行:
但是,现在我得到了这个输出:
现在我没有得到“get; set;” 属性中的文本。有谁知道我错过了什么?
c# - 从头开始构建语法树
我之前问过这个问题,这个问题得到了回答,但是有人提出了一个建议,可以帮助我在前进的过程中避免犯类似的错误。
建议是我自下而上而不是自上而下构建语法树。有人可以提供一个小演示或链接来说明我将如何从头开始执行此操作吗?
这是代码:
那么我将如何做同样的事情,但从头开始呢?
提前致谢,
鲍勃
PS我的财产也缺少“get; set;” 里面的文字。有人可以评论我忘记添加导致此文本添加到属性的内容吗?