问题标签 [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.

0 投票
3 回答
1899 浏览

asp.net - 使用 Roslyn 动态编译 Controller

随着 Roslyn CTP 的公开发布,我们可以尝试思考可以用它做的很酷的事情,而不是编写 c# 脚本。

由于 asp.net mvc 允许您编写自定义控制器工厂,我们可以编写一个工厂吗?

  • 即时从源文件编译控制器
  • 将新创建的类型加载到运行时(运行时可以处理吗?)
  • 如果先前对同一控制器的请求已经发出,则否决先前的类型

这将允许我们快速原型化或更改控制器,因为您可以简单地编写代码,并且控制器工厂将获取更改而无需重新编译。

0 投票
5 回答
33806 浏览

.net - Microsoft Roslyn 与 CodeDom

昨天在 InfoWorld 上发布的有关新Microsoft Roslyn新闻稿

这种“解构”编译器最明显的优点是它允许从.Net 应用程序中调用整个编译-执行过程。Hejlsberg 演示了一个 C# 程序,该程序将一些代码片段作为字符串传递给 C# 编译器;编译器将生成的 IL 汇编代码作为对象返回,然后将其传递给公共语言运行时 (CLR) 以执行。瞧!借助 Roslyn,C# 获得了动态语言在运行时生成和调用代码的能力。

自从 .NET 4 发布以来,我已经能够做到这一点CSharpCodeProvider.CompileAssemblyFromSource,实际上我在不久前编写的一个 ASP.Net 项目中使用了它——它允许用户在文本框中输入代码,选择程序集/命名空间引用,然后即时执行并显示该代码的输出,以便在 Windows Azure 上进行实时环境代码测试。

CodeDom罗斯林的一部分/前身吗?Roslyn over 有什么特别的好处CodeDom

0 投票
3 回答
799 浏览

roslyn - Roslyn 是否包含编译器源代码?

似乎 Roslyn 提供了新的 API 来公开许多编译器内部数据结构以进行代码分析等。C# 和 VB 编译器已为此目的进行了重写。那么除了新的 API 之外,我还可以访问编译器源吗?

0 投票
1 回答
1815 浏览

c# - Roslyn .rsp 文件中的引用

我在 CSharpInteractive.rsp 中看到,您可以使用 /r 在 GAC 中添加对 DLL 的引用:

您如何添加对您自己的 DLL 的引用?

我尝试了 System.Reflection.Assembly.LoadFrom,它没有失败但没有工作。

我正在尝试添加对具有扩展方法的 DLL 的引用。

如果我尝试直接在交互式窗口中添加扩展方法的代码,我会收到此错误:

错误 CS1109:扩展方法必须定义在顶级静态类中;XYZ 是一个嵌套类

0 投票
3 回答
10187 浏览

c# - 在 C# 交互式中获取调试器上下文

C# Interactive 似乎比即时窗口强大得多(至少它处理 LINQ 中经常使用的 lambda 表达式 - 请参阅Visual Studio 调试“快速监视”工具和 lambda 表达式),但它看起来不能用作一个替代品,因为它不知道调试器上下文。有没有办法访问调试器上下文?

我已经看到在 F# 交互式中获取调试器上下文,它可能需要相同的东西,但也许有新的/不同的东西可用。

http://extendedimmediatewin.codeplex.com/可能很有用,但看起来很死,尽管有人在 2011 年 10 月 18 日说他计划将其移植到 VB.Net ( http://extendedimmediatewin.codeplex.com/discussions/75589)。

0 投票
1 回答
928 浏览

c# - 访问Roslyn 中的ClassDeclaration node.Identifier

如何在源文件中找到声明所在的行号?

0 投票
3 回答
870 浏览

visual-studio - Roslyn CTP 作为虚拟控制台应用程序的替代品有多稳定?

我经常发现自己制作了一个虚拟控制台应用程序来测试一些简单的东西。(例如 DateTime.Parse 如何像 YYYY-MM-DD-HH-MM-SS 格式的字符串?)

我知道 Roslyn 具有 C# 交互式窗口,允许在我的解决方案仍然打开的情况下在 IDE 中运行这些简单的测试。这是我真正想要的唯一功能。

但是 Roslyn CTP 的稳定性如何?它会弄乱我的IDE吗?当我不使用它时让我慢下来?它仅用于 Roslyn 功能吗?还是它会尝试用我的开放解决方案替换我的普通编译器?

0 投票
2 回答
744 浏览

c# - 安装 Roslyn 会对我的 VS 安装产生什么影响

我写了一些 VS 扩展,Roslyn 似乎是一个有趣的工具。我真的很想尝试一下。

有没有安全的安装方法?我可以将它安装在一个孤立的蜂巢中吗?它卸载得有多干净?

如果我错了,请纠正我,但 Roslyn 编译器取代了“标准”C# 编译器。如果它打破了结果将是安静的不愉快

0 投票
3 回答
554 浏览

.net - 在 C# 中实现编译器最有趣和最有前途的方法是什么?

我刚刚开始我的毕业项目,该项目应该持续 6 个月。该项目的目标是为一种脚本语言实现一个 .Net 编译器。我在课程中将编译器构造作为一个主题,并且知道如何实现编译器的基本步骤,但是我们使用 Bison 和简单的编译器以及 GCC 作为后端,因此我对实现编译器知之甚少在.Net平台上。

在对这个主题进行了一些研究之后,我发现了以下代码生成的替代解决方案(我不是在谈论编译器的其他重要部分,比如解析器——它超出了这里的范围):

  1. 使用Reflection.Emit直接生成代码。
  2. 在 Reflection.Emit 上使用通用编译器接口抽象来自动化某些代码生成。
  3. 在运行时使用CodeDOM进行 C# 和 VB 编译。
  4. 有一个新出现的 C#“编译器即服务”,称为Roslyn,现在可作为 CTP 使用。
  5. DLR提供对动态代码生成的支持,并具有一些用于通过表达式树等生成运行时代码的接口。
  6. Mono 附带Mono.Cecil库,该库似乎也具有一些代码生成功能。

我项目的主要目标是更深入地研究 .Net,学习编译器构造并为我的工作取得好成绩。第二个目标是提出一个编译器实现,以后可以在许可的开源许可下向社区开放。

那么,什么是最有趣、最有教育意义、最有趣和最有前途的方法呢?如果我有更多时间,我肯定会尝试所有这些,但我需要在 6 个月内提交我的工作以获得积极的成绩......

提前谢谢你,亚历山大。

0 投票
4 回答
1320 浏览

c# - 寻找 C# => Linq 表达式编译器

我正在寻找将整个方法转换为表达式树的能力。写出来会很烂。:)

所以(简单的例子)给出以下文本:

我想获得一个代表这个的内存对象,或者以下文本:

有任何想法吗?有没有人可能对罗斯林做过一些可以做到这一点的事情?

编辑:澄清:我想将任何 C# 方法(例如,上面的方法)作为文本吸收,并产生一个结果表达式。基本上我希望将任何给定的 C# 方法编译成表达式树。