为自定义工具包装.exe的便宜方法

本文关键字:方法 exe 包装 自定义 工具 工具包 | 更新日期: 2023-09-27 18:09:49

我有一个自定义脚本语言和一个编译器(用C编写的EXE),可以将该语言转换为c#代码。我想把脚本编译器作为解决方案中脚本文件的自定义工具,并让它生成c#代码。

我在网上看过文章和教程,它们都让你生成COM接口,并在注册表和GAC中注册你的自定义DLL,我真的不想处理所有这些。

是否有一个包装器或hack或第三方插件可以使这更容易?比如,如果有一种方法可以运行批处理脚本作为自定义工具,并从标准输出中生成文件背后的代码,我可以将文件从编译器管道到标准输出。

为自定义工具包装.exe的便宜方法

首先,我知道你说你不想通过MSFT的方式注册,但我建议你重新考虑。详情在这里:http://msdn.microsoft.com/en-us/library/vstudio/bb166527.aspx

既然我们解决了这个问题,我给你的建议是:

  1. 把你的exe放在一个固定的位置(最好的位置可能是在你的解决方案或存储库的根)。接下来,手动运行您的工具一次,这样您就拥有了.cs文件或您正在生成的任何文件,以便您可以将它们添加到解决方案中。这样c#编译器就知道它们在那里,你只需要点击构建按钮,它就会有要构建的文件。

  2. 接下来,创建一个预构建事件(在项目属性,构建事件选项卡下),该事件使用适当的命令行参数调用exe以使其完成任务(生成新的cs文件)。我建议你编辑你的exe一次取多个文件,使你的预构建命令更简单。(这就是把你的文件放在sln或repo目录是有帮助的,因为你可以使用VS宏来获得你的exe和要读取的文件的绝对路径。)

  3. 现在发生的是,在msbuild被调用之前(但是在你点击build之后),你的脚本(或exe)将运行以生成新的输出文件。由于msbuild尚未启动,您可以更改任何解决方案文件到您的核心内容,更改将由msbuild和最终(可能一旦构建完成)VS.拾取

指出:我从来没有能够得到一个构建事件的工作在第一次尝试,它通常抛出一个错误,将显示在VS错误/警告窗口。我通常将整个错误复制到记事本(或站点)中,并将其编辑到带参数的实际命令行。然后我打开一个命令shell并尝试执行它。这里的错误通常更有帮助,你可以调整,直到你得到正确的,并复制更改回vs