问题标签 [compiler-services]

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 投票
1 回答
107 浏览

java - 将 Web 应用程序连接到离线编译器 (Java/Python)

我正在创建一个应用程序,学生在前端(Angular)中输入代码。代码将被发送到后端(NODE)进行编译和运行。我知道 HACKER-EARTH API 可用于通过 API 调用获取编译和输出结果。我想让这个应用程序离线可用(内部网而不是互联网)。有什么可能的方法让我的应用程序可以与系统上安装的编译器(JAVA、PYTHON、C)通信以编译给定的代码并返回结果?

任何资源/链接都会非常有帮助。

请帮忙!提前致谢!

0 投票
1 回答
61 浏览

c# - 在诊断完全分析编译后如何运行方法?

我正在实现使用 roslyn 编译器库DiagnosticAnalyzer分析对象。CompilationWithAnalyzers我希望在单个 diagosticanalyzer 耗尽时添加一个事件,但一直找不到这样的钩子。我见过的唯一类似事件是它在编译AnalysisContext.RegisterCompilationAction完成时触发,而不是分析。

这样的事件存在吗?还有其他方法可以实现相同的目标吗?

0 投票
1 回答
2829 浏览

azure - 错误 MSB4086:尝试对“$(MSBuildVersion)”进行数值比较,结果为“”而不是数字

尝试使用 Azure Kudu 部署项目(从 BitBucket 存储库中读取)我在 Azure 门户中的部署中心收到以下错误...

此错误发生在所有最新版本的Microsoft.Net.Compilers NuGet 包中。唯一有效的版本是5 个月前的3.0.0

有谁知道这是什么原因?Azure Kudu 还没有更新吗?

### 编辑 ###

我还打开了一个问题@ Kudu GitHub repo。

0 投票
2 回答
70 浏览

visual-studio - Visual Studio - 将硬编码的数字/标识符注入代码

沿着这些路线有可能吗?使用 Visual Studio(我猜这是一种与语言无关的语言,但我使用的是 C#),预编译,我想以某种方式注入和替换具有唯一 ID 的值(或数字很好!)。

例如

因此,对于每个函数,我将拥有 {VARIABLE_FOR_UNIQUE_ID_REPLACED_AT_COMPILE_TIME} 并且它将是该函数的唯一 ID,在整个解决方案中的每个文件中。它不需要像 GUID 这样复杂的东西,理想情况下它只是添加时的增量数字,但添加后不会更改。此数字用于标识错误代码的功能 - 因此即使消息是通用的“出现问题”,我也可以跟踪错误源自何处,例如“错误代码 #445 出现问题”、“错误代码 #6778出问题了”。

0 投票
1 回答
23 浏览

ide - 哪个更适合学习 IDE 或在线编译器?

请在 IDE/在线编译器之间建议我一个不错的选择。作为初学者,我想了解有关编码的有组织的方法的知识,这在上述方法中也是最舒服的

0 投票
1 回答
38 浏览

vb.net - 有没有一种聪明的方法来复制 Stack(Of ...)

在 vb.net 中,我正在尝试创建复制/反向/合并堆栈的扩展。请注意,它可能已经存在,但我面临一个问题。

我有一个名为 utility.vb 的模块,它包含一大堆<Extension()>,就像我正在尝试编写的 Duplicate 一样。

我正在一个名为 labelStack 的堆栈中进行各种推送。但是当我从我的代码中调用 Duplicate 函数时(因为我需要多次重复使用同一个堆栈),它没有编译(请注意堆栈是由自己创建的对象类组成的)

错误是“'Duplicate' 不是 'Stack(Of MyForm.CCNode)' 的成员”

我还尝试像这样更改扩展名的签名:

但没有任何成功。

有人可以帮助我(指出我的错误,纠正它或给我一种方法来实现我的需要,而无需自己编写函数)?

PS:我使用 Stack 是因为我需要以 Push 的相反顺序弹出,这似乎很合适。

0 投票
0 回答
42 浏览

recursion - FSharp 编译器服务:如何确定来自 Typed AST 的模块级声明的相互递归?

我目前正在制作一个使用 FSharp 编译器服务分析 FSharp 程序的类型化 AST 的应用程序。

在识别模块级声明上的相互递归函数时,我遇到了问题。

TAST 模式允许我确定一个表达式是否是该模式的递归 let:

但是,如果我在模块级别,我会(在 2 个相互递归函数的情况下)在实现文件声明的匹配规则上获得 2 个不相关的匹配项:

我已经非常彻底地查看了 memberOrFuncOrVal、args 和 body 的类型,发现没有提到 let 绑定是递归的这一事实,也没有提到任何对其他相互递归函数的引用。

这些信息在 Typed AST 级别根本不可用,还是我找错地方了?

0 投票
2 回答
40 浏览

c - 如何判断 C 文件中缺少哪些定义,而不是通过编译失败?

我有一个 C 文件(为简单起见,假设它不包含任何内容)。这个 C 文件需要几个文字数字的定义才能正确编译 - 我想弄清楚这些是哪些定义。

自然地,我们可以尝试编译该文件,但在某些时候我们会开始出现故障;通过一些故障恢复,我们可能会收到有关其他定义的故障通知。但是 - 这不是我想要的:

  • 我对完成程序的编译不感兴趣。构建一个语法树(甚至是某种简化的语法树)就足够了。
  • 我可以假设,除了缺少宏之外,该程序在语法上是正确的。对于 C 来说,这应该意味着它在语法上是正确的,句号。
  • 我可以假设相关的宏都是大写的,即它们的形式是[A-Z][A-Z_0-9]*)。

获取未定义宏列表的替代方法是什么?

动机:实际上,我正在将一些东西输入动态编译库,并且我想事先检查是否已定义所有必要的宏,而不知道先验文件需要哪些宏(即,对​​于不同的输入文件可能是不同的宏)。

0 投票
1 回答
545 浏览

c# - VS2017 在加载任何项目时崩溃,并出现“FileNotFoundEx: System.Runtime.CompilerServices.Unsafe, V=4.0.4.1”

抱歉冗长,但我陷入了困境 - 只是想提前提供所有细节。

这个星期五(2021 年 11 月 12 日)在重新启动 Visual Studio 2017 后,它在打开现有解决方案时开始崩溃,没有通知。这至少在一周前工作得非常好(在 2021 年 11 月 5 日最后一次 Win10 更新 KB5006670 之后 - 然后重新启动)。尝试加载旧的解决方案(已经 2 年以上没有被触及)会导致完全相同的行为:
您会看到“正在加载项目 ..”窗口(不确定它是否会遍历解决方案中的所有项目),然后突然VS主窗口消失了……就是这样

VStudio 的配置至少一年没有动过。也没有明确的更新/补丁或 NuGet 包。VS 本身会启动并显示带有通常开始页面的主窗口。 但我无法加载任何解决方案或项目

第一个相关的事件日志条目:

紧随其后的是这3个:

1)

当我尝试加载解决方案时,这种具有相同嫌疑人的 3 个条目的模式重复了几次。

在最后一个三元组中,它有ServiceHub.RoslynCodeAnalysisService32.exe作为故障应用程序:

最后一个(今天的第一个):

Roslyn.Utilities.TaskExtensions.ReportFatalErrorWorker()似乎是一个常见的故障捕获器,所以我猜这个问题与后台代码分析有关,在加载解决方案时启动。谁打破了它以及如何打破它?

搜索错误消息System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.给了我以下链接: 1 , 2 , 3 , 4 , 5
但是这些都没有描述我的情况。在我的任何项目中,我都没有对该库的任何 [已知] 依赖。直到星期五我什至没有意识到它!

在尝试可能的补救措施之前,在3接受的答案中建议(“在我为该 DLL 运行 NuGet 更新后错误消失了”),我想了解到底发生了什么(以及如何发生!)? 我的列表中没有此类 NuGet 包的明确条目。我最近没有安装或更改任何东西。
这场惨败正是我试图保持很少变化的 [=> known & stable] 开发环境的原因。

在 HDD 上搜索System.Runtime.CompilerServices.Unsafe.dll会产生以下结果:

VStudio 的“关于”帮助显示以下版本号: