草庐IT

omnisharp-roslyn

全部标签

c# - 在 C# 中运行 F# 代码 -(就像在 C# 中使用 Roslyn 的 C#)

有没有办法在C#中运行F#代码?我用C#编写了一个应用程序-我想为其提供执行F#、读取记录对象、从F#枚举列表的能力。目前的解决方案是什么?我知道将来可能会有一种方法可以通过更新Roslyn来做到这一点。此外,好奇目前如何在F#中运行F#代码。有没有办法轻松做到这一点? 最佳答案 目前,您必须将F#设为库,然后从C#调用它。由于F#只是.NET,因此使用F#库(大部分)就像使用任何其他C#库一样。你可能想看看FSharpX然而,对于这一部分,因为它提供了一些实用程序来简化从C#调用F#,反之亦然。如果您想从C#动态编译F#,则需要使

c# - Visual Studio 2015/C# 6/Roslyn 无法编译 PCL 项目中的 XML 注释

我刚刚安装了最新发布的VisualStudio2015社区版(RTM),我正在尝试获取myopensourceproject在VS2015和C#6.0下工作。我的一些.cs跨项目共享。这样我就可以构建PCL版本(功能有限)和核心库的“完整”版本。然而,出于某种原因,某些代码文件在完整项目中构建正确,但在PCL项目中构建时失败(所有内容均在C#5和VisualStudio2013下编译)。构建PCL版本时,编译器似乎无法解析XML注释中的cref。这是一个在我的机器上失败的简化代码示例:///publicclassA{//Compileerroronnextline:///.public

c# - 如何在多个项目中配置 Roslyn 分析器?

我想在我的组织中强制执行代码质量和一致的样式。为此,我计划添加RoslynAnalyzers和StyleCop到我的项目。为了满足我们商定的编码标准,这些分析器将需要额外的配置。理想情况下,它们将使用.editorconfiglikethis配置或者,否则,usingrulesets.在我的组织中,我们有许多项目,在许多解决方案中,在许多存储库中。我想尽可能广泛地执行这些标准。我不想将所有分析器包和配置添加到每个项目,是否有更好、更简单、更容易一致的方法来实现这一点?我有一个想法,我可以为我的组织制作一个NuGet包,其中包含我的组织选择的分析器、任何配置以及可能创建的任何自定义分析器

c# - 在 Roslyn 中获取完全限定的元数据名称

我需要获取特定符号的完整CLR名称。这意味着对于泛型类型,我需要将`1、`2等附加到类型。现在,ISymbol已经有了一个属性MetadataName,它就是这样做的。但它排除了周围的类型和命名空间,只给出了手边符号的名称。获取完全限定名称的常用选项,即通过ToDisplayString在这里不太适用,因为它的各个部分不会使用MetadataName。有没有内置这样的东西?或者我是否必须将ContainingSymbol链与.连接起来?(这个假设是否存在问题?)编辑:刚刚注意到,如果它是包含在另一种类型中的类型,则在各个名称之间需要一个+,但除此之外,使用。应该可以,我想。

c# - 现在 VS2015 已经出来了,支持调试 Roslyn 的方式是什么?

背景我们希望修改Roslyn并能够在编译时对其进行调试。在VS2015之前的版本中,这样做是一个痛苦的过程,而且流程不是很好。我们的目标是开发一个C#变体编译器。梦想VS2015之前,执行和调试修改后的Roslyn需要打开第二个VSIDE(实验性)集才能使用修改后的Roslyn。此过程无法直接正确设置,并且通常会破坏您的VS2015安装。VS2015之后,是否有更好的设置和流程可以修改和调试Roslyn?我已经安装了VisualStudio2015,但看起来我需要更多必需的位。之后我不确定如何运行测试并尝试VS2015中的更改。 最佳答案

C# Roslyn API,读取 .cs 文件,更新类,写回 .cs 文件

我有这个工作代码,它将一个.cs文件加载到RoslynSyntaxTree类中,创建一个新的PropertyDeclarationSyntax,将其插入到类中,然后重新编写.cs文件。我这样做是为了学习经验以及一些潜在的future想法。我发现在任何地方似乎都没有完整的RoslynAPI文档,而且我不确定我这样做是否有效。我主要关心的是我调用“root.ToFullString()”的地方-虽然它有效,但这是正确的方法吗?usingSystem.IO;usingSystem.Linq;usingRoslyn.Compilers;usingRoslyn.Compilers.CSharp;

c# - 从 Roslyn ClassDeclarationSyntax 获取类全名(包括命名空间)

我有一个来自roslyn语法树的ClassDeclarationSyntax。我是这样读的:vartree=SyntaxTree.ParseText(sourceCode);varroot=(CompilationUnitSyntax)tree.GetRoot();varclasses=root.DescendantNodes().OfType();标识符只包含类的名称,但没有有关命名空间的信息,因此缺少完整的类型名称。喜欢“MyClass”但没有“Namespace1.MyClass”获取语法的命名空间/FulltypeName的推荐方法是什么? 最佳答案

c# - 将 Roslyn Emit 方法与 ModuleBuilder 而不是 MemoryStream 结合使用

我在使用Roslyn编译为动态程序集时遇到了性能问题。编译大约需要3秒,而使用CodeDom编译器编译相同代码需要大约300毫秒。这是我用来进行编译的代码的简化版本:varcompilation=CSharpCompilation.Create("UserPayRules.dll",syntaxTrees,assembliesToAdd);using(varstream=newMemoryStream()){stopWatch.Start();varresult=compilation.Emit(stream);stopWatch.Stop();Debug.WriteLine("Com

c# - 使用 Roslyn 在引用的程序集中获取接口(interface)实现

我想在我正在开发的框架中绕过一些经典的汇编扫描技术。所以,假设我定义了以下契约(Contract):publicinterfaceIModule{}这存在于说Contracts.dll.现在,如果我想发现这个接口(interface)的所有实现,我们可能会做类似以下的事情:publicIEnumerableDiscoverModules(){varcontractType=typeof(IModule);varassemblies=AppDomain.Current.GetAssemblies()//Badbutwilldovartypes=assemblies.SelectMany(

c# - Roslyn 与 MsBuild 有何关系?

我想知道:Roslyn与MsBuild到底有什么关系?我的理解是Roslyn是一个编译引擎MsBuild主要是一组关于如何设置项目的规范向上-即基本上是.csproj、.sln文件和等等。然后,MsBuild还附带一个msbuild.exe-如果我错了请纠正我,它能够实际编译项目。但是,假设msbuild.exe可以编译项目,但Roslyn也可以,这将如何与Roslyn联系起来?如果是MSBuild15,msbuild.exe是否使用Roslyn进行编译?他们是完全分开的吗?我是不是误会了什么?而且更具体地说:假设我想以编程方式创建简单的.csproj文件,并使用Roslyn的MSBu