roslyn相关内容

.NET Core 的新 .csproj 格式的 Roslyn 工作区

我一直在研究使用 Roslyn 的工作区 API 加载项目的 VS Code 扩展,目前该扩展通过 ProjectJsonWorkspace 支持 .NET Core 的旧 project.json 格式 在 Microsoft.DotNet.ProjectModel.Workspaces 包中输入. 随着即将发布的新工具更改,我很想支持新的 .csproj 构建格式,但似乎找不到支持它的 ..
发布时间:2021-11-24 13:08:27 C#

使用 <DebugType>Full</DebugType> 和使用有什么区别?和 <DebugType>Portable</DebugType>.net 核心项目?

要生成开放式封面报告,我必须将 debugType 设为 Full.我在构建服务器上生成报告,因为如果覆盖率没有达到某个阈值,我必须使构建失败.构建是在发布模式下生成的.在我的 csproj 文件中保留 debugType Full 有什么后果?它会降低生产中的性能吗? 解决方案 不同之处在于“完整"类型发出一个经典的 Windows PDB 符号文件,该文件复杂且文档不足.“便携式" P ..
发布时间:2021-11-24 13:06:29 C#/.NET

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

在旧的 .NET 中,我们曾经能够运行 csc 编译器来编译单个 .cs 文件或多个文件. 在 .NET Core 中,我们有 dotnet build,它坚持拥有一个合适的项目文件.是否有独立的命令行编译器允许在没有项目的情况下编译源代码文件(并在同一命令行上列出引用的依赖项)? 在 Linux 上,当我安装了旧的 csc 和新的 .NET Core 时,我得到以下时间: [roo ..
发布时间:2021-11-24 12:30:53 C#/.NET

从运行时加载的程序集中获取 System.Type

作为这个问题的后续问题,我现在遇到了能够获取类型的问题 是用户在自己的解决方案中定义的类型.使用标准的 mscorlib 类型,一切正常. 问题很简单:如何从我只能在运行时知道的程序集中获取这种类型? 如此处的评论中所述: 另外,“提取类型"是什么意思?你的意思是得到反射类型?没有好帮手,部分原因是(通常)您永远不能假设您正在编译的类型在运行时是可创建的.“编译时间"和“编译时间 ..
发布时间:2021-11-24 11:57:06 C#/.NET

如何将 Roslyn 脚本提交用作其他 Roslyn 编译中的程序集

我想在另一个非脚本化 Roslyn 编译中将脚本重用为动态程序集,但我终生无法弄清楚如何使其工作. 例如,假设我以正常方式创建了一个脚本,然后使用以下内容将脚本作为程序集发送到字节流: var compilerOptions = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary);var 编译 = script ..
发布时间:2021-11-24 11:42:54 C#/.NET

在 .net core 中为 Roslyn 动态选择引用

TL;DR 如何让运行时在 .NET Core 5 中为在运行时编译的涉及 .NET 4.7.2 代码的 C# 插件选择正确的程序集? 背景 我有一个 .NET 4.7.2 应用程序,根据一些可配置的插件,该应用程序的某些模块的行为有所不同.我在运行时编译 C# 插件的 .NET 4.7.2 程序集中有以下代码. public OperationResultCompileCl ..
发布时间:2021-11-24 10:55:59 C#/.NET

Roslyn C#:如何获取方法访问的所有字段和属性(及其所属类)

我希望为我的方法计算对外部数据的访问指标.此外,我想知道我的方法从哪些对象访问字段和属性,以确定功能嫉妒代码异味的存在. 对于这个例子: 公共类 DoctorService{私人名单_医生;公共医生 FindAvailableDoctor(DateRange timeSpan){foreach(_doctors 中的 d 博士){foreach(d.HolidayDates 中的 Date ..
发布时间:2021-10-26 16:20:18 C#/.NET

WPF/XAML:如何引用未在任何命名空间中定义的类

我正在执行一个尝试定义和打开 WPF 窗口的 roslyn 脚本. 除其他外,我的脚本 定义附加行为 定义了一个 XAML 字符串,我基于它创建了一个 WPF 窗口.在此 XAML 代码中,我想使用脚本中定义的 TextBoxCursorPositionBehavior. 我的脚本 (.csx) 文件看起来类似于 公共类 TextBoxCursorPositionBehavi ..
发布时间:2021-09-30 18:43:26 C#/.NET

为 Visual Studio 编写解决方案分析器

所以我需要的是为什么要为 Visual Studio 编写解决方案分析器,它可以: 检测移动类和移动方法重构. 在 Visual Studio 中显示推荐的重构. 应用重构. 我有一个可以执行此操作的控制台应用程序(使用 Roslyn 编译器),但我想将逻辑集成到 Visual Studio 中.从我所读到的内容来看,当前的代码修复/重构/分析器仅支持文档级别的重构,但对我而言,这 ..
发布时间:2021-09-18 19:36:11 C#/.NET

使用 Microsoft.CodeAnalysis.Emit 的 Visual Basic 项目中的编译器问题

我开发了以下代码来使用 Microsoft.CodeAnalysis.Emit 库生成 dll 文件.该代码成功地为 C# 项目生成了 dll 文件.但是,它没有成功构建 Visual Basic 项目.对于使用 VS IDE 成功构建的 VB 项目,它会引发大量编译器错误.请参阅为基本 Windows 应用程序项目抛出的错误.VB 项目是否有任何特定的编译器选项?请建议如何解决此问题. M ..
发布时间:2021-07-10 19:35:08 C#/.NET

使用 [ReadOnly] 属性标记参数并让分析器断言方法主体中没有重新分配

无法将方法的参数标记为只读,因此无法在方法中重新分配,我开始考虑为此创建一个分析器.该参数将被归因于 [AttributeUsage(AttributeTargets.Parameter)]公共类 ReadOnlyAttribute:属性{//...} 一个方法的签名是 公共类Foo{public void Bar([只读] MyObject o){o.DoSomething()//没问题o ..
发布时间:2021-07-10 19:35:05 C#/.NET

我的注释在哪里?

当我尝试对类、属性和方法进行注释,然后尝试检索带注释的节点时,只返回一个类.为什么? 这里是注释的代码 SyntaxAnnotation propertyAnnotation = null;SyntaxAnnotation classAnnotation = null;SyntaxAnnotation setMethodAnnotation = null;文件 = 文件.AnnotateC ..
发布时间:2021-07-10 19:35:02 C#/.NET

在 UWP 中使用 Roslyn 脚本

我有以下代码段. var script = CSharpScript.Create("int x = 12;");var result = await script.RunAsync();var 变量 = result.GetVariable("x");int value = (int)variable.Value; 它在第二行崩溃,内容如下: 无法加载文件或程序集“System.Cor ..
发布时间:2021-07-10 19:34:59 C#/.NET

使用 Roslyn 查找从特定基类派生的类

在这个页面下面的代码建议查找从给定类型派生的类,但此代码不起作用,因为以下行 var 符号 = _model.GetDeclaredSymbol(node); 返回 ISymbol,而不是预期的 INamedTypeSymbol. 关于 ..
发布时间:2021-07-10 19:34:56 C#/.NET

来自 ReferenceLocation 的符号?

我正在尝试使用 Roslyn 编写一些代码来验证一些架构分层约束以帮助一些程序集整合. 即:* 一个内部类型,必须在一个 .Internal 后缀的命名空间中.* 仅允许在 X.Y.Z 命名空间中使用“X.Y.Z.Internal"类型. 解决这个问题的最简单的方法是根据 FAQ(9) 通过枚举找到所有内部类型,然后利用 SymbolFinder 找到所有引用并检查引用站点上的包含类型 ..
发布时间:2021-07-10 19:34:47 C#/.NET

Roslyn Fix Provider 检查修复是否来自预览窗口

我编写了一个修复提供程序,它添加了成员​​元素 resx 文件.我注意到当 Visual Studio 生成预期的更改时,它会调用将资源键添加到文件的方法. 我正在注册我的 FixProvider 我正在寻找一种方法来判断修复是否是从预览中调用的 public 密封覆盖异步任务 RegisterCodeFixesAsync(CodeFixContext context){var root ..
发布时间:2021-07-10 19:34:41 C#/.NET