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

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

是否有包装器,黑客程序或第三方插件可以简化此过程? 就像有一种方法可以将批处理脚本作为自定义工具运行,并从该文件的stdout生成文件背后的代码一样,我可以将文件从编译器传递到stdout。

===============>>#1 票数:1

首先,我知道您说过您不想通过MSFT方式进行注册,但是我建议您重新考虑。 详细信息在这里: http : //msdn.microsoft.com/zh-cn/library/vstudio/bb166527.aspx

现在我们解决了这个问题,我对您的建议是:

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

  2. 接下来,创建一个预构建事件(在项目属性下的“构建事件”选项卡下),该事件使用适当的命令行参数调用您的exe以使其执行其任务(生成新的CS文件)。 建议您编辑exe一次获取多个文件,以使构建前命令更简单。 (在这里将文件放在sln或repo目录中会很有帮助,因为您可以使用VS宏获取exe和要读入的文件的绝对路径。)

  3. 现在发生的事情是在调用msbuild之前(但在您按下build之后),脚本(或exe)将运行以生成新的输出文件。 由于msbuild尚未启动,因此您可以根据自己的喜好更改任何解决方案文件,并且这些更改将由msbuild以及最终(可能在构建完成后)VS进行。

注意:第一次尝试时,我始终无法获得构建事件的作用,它通常会引发一个错误,该错误将显示在VS错误/警告窗口中。 我通常将整个错误复制到记事本(或scite)中,并使用参数将其编辑为实际的命令行。 然后,我打开命令外壳并尝试执行它。 这里的错误通常更有用,您可以进行调整,直到正确无误,然后将更改复制回VS。

  ask by Jay Lemmon translate from so

未解决问题?本站智能推荐: