最近,为了了解我每天工作的一切,用CIL编写变得非常有趣)
在这方面,出现了一个问题:是否有任何IDE用于在 pure 上开发应用程序IL,以及应该为更详细的研究准备什么(因为到目前为止,我的武器库中只有我之前读过的直觉,IL以及维基百科上带有列表说明的页面)
到目前为止,我只找到了 Visual Studio 的扩展,但它只允许您将指令集成IL到代码中C#,F#或者VB,这不是我希望看到的¯\_(ツ)_/¯
最近,为了了解我每天工作的一切,用CIL编写变得非常有趣)
在这方面,出现了一个问题:是否有任何IDE用于在 pure 上开发应用程序IL,以及应该为更详细的研究准备什么(因为到目前为止,我的武器库中只有我之前读过的直觉,IL以及维基百科上带有列表说明的页面)
到目前为止,我只找到了 Visual Studio 的扩展,但它只允许您将指令集成IL到代码中C#,F#或者VB,这不是我希望看到的¯\_(ツ)_/¯
或者,使用自定义模板使 Visual Studio 本身成为这样的 IDE。
一、项目模板
让我们创建一个 C# 控制台应用程序项目,我们称之为 CilProject。
在解决方案资源管理器中,在项目的上下文菜单中,调用“卸载项目”项。在同一个地方,对于卸载的项目,我们将调用“更改项目”项。
在 XML 中查找节点
并将其替换为以下代码:
再次加载项目(在同一个上下文菜单中,选择“重新加载项目”项)。
将 AssemblyInfo.cs 替换为 AssemblyInfo.il:
将 Program.cs 替换为 Program.il:
对于这两个 .il 文件,在properties中将Build 操作设置为Compile 。之后,项目应该构建并运行。
在 Visual Studio 中,选择Project - Template Export - Project Template,在对话框中输入名称和描述,并选中“Automatically import into Visual Studio”复选框。结果应该是以下 CilProject.csproj 模板(适用于 VS 2017 和 .NET 4.0):
模板文件将放置在
(Мои документы)\Visual Studio 2017\Templates\ProjectTemplates. 之后,我们的 CilProject 就会出现在 Visual C# 类别中的项目创建窗口中。您已经可以编写程序(在 AssemblyInfo.il 中输入对程序集的引用,并通过“编译”程序集操作将代码添加为 .il 文件)。
二、元素模板
为方便起见,我们还将创建一个类模板。让我们添加 Class1.il 文件:
在 Visual Studio 中,选择Project - Template Export - Element Template ,在对话框中选择Class1.il文件,勾选“Automatically import into Visual Studio”并输入其余参数。获取目录中带有模板的zip文件
(Мои документы)\Visual Studio 2017\Templates\ItemTemplates,解压并打开.vstemplate文件。找到其中的节点<ProjectItem...>并将属性添加到它ItemType="Compile":让我们将文件打包在同一个 ZIP 存档中,并将其放在ItemTemplates目录中旧文件的位置。让我们重新启动工作室,然后在添加元素的窗口中,在“Visual C# 元素”类别中将出现我们的类模板。
结果
像这样的东西:
优点:调试工作,输出编译器错误和警告指示文件和行,您可以在调试/发布配置之间切换。
缺点:项目属性不起作用,通过工作室界面添加链接的功能,语法突出显示,编辑期间的错误检查等等。
输出模板文件:项目模板、元素模板。
IL Disassembler实用程序, System.Reflection.Emit.OpCodes类文档,规范的第三部分。
来源
Visual Studio 项目和项模板
如何加载我在 Visual Studio 中创建的模板?
是否有任何从 Visual Studio 项目中编译 CIL 代码的示例