1

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

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

是否有包装器或黑客或 3rd 方插件可以使这更容易?就像如果有一种方法可以将批处理脚本作为自定义工具运行,并从其标准输出生成文件背后的代码,我可以将文件从我的编译器通过管道传输到标准输出。

4

1 回答 1

1

首先,我知道您说您不想通过 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 错误/警告窗口中。我通常将整个错误复制到记事本(或 scite)中,然后将其编辑为带有参数的实际命令行。然后我打开一个命令外壳并尝试执行它。这里的错误通常更有帮助,您可以调整直到正确并将更改复制回 VS。

于 2013-04-18T03:31:47.190 回答