如何为 VS2012 C# 项目执行自定义生成步骤
本文关键字:自定义 执行 项目 VS2012 | 更新日期: 2023-09-27 18:30:25
我们有一个VS2012解决方案,里面有十几个C#项目。其中一个 C# 项目使用文本文件,该文件通过我们编写的单独 C# 工具转换为 SQL。我们希望在生成期间,只要 TXT 文件发生更改(发布和调试版本),就会自动调用此 TXT-2-SQL 文件转换。
此外,我们希望 Debug 构建使 SQL 加载到本地数据库中;即,调用我们现有的批处理文件之一,populate_db.bat,使用 SQL 文件名作为参数(这只是包装了 mysql 客户端的调用并导致 SQL 被执行)。
最好的方法是什么?
根据我自己的研究,我发现了以下选择:
- 自定义 MSBuild 任务 - 创建一个单独的程序集,其中包含实现 ITask 的类;从我们的 csproj 引用它;让该任务完成刚才描述的工作。
- 自定义生成工具(单个文件生成器) - 创建一个单独的程序集,其中包含实现 IVsSingleFileGenerator 的类;在每台开发计算机上注册它;在我们现有的 csproj 中上述 TXT 文件的属性中的"自定义构建工具"项中使用该工具名称 C++ Makefile
- 项目 - 在其他空的 C++ Makefile 项目中使用 CustomBuild 或 CustomBuildTool 语句;将感兴趣的 TXT 文件包含在其他项目文件中;将该项目添加到解决方案。
目标 + 执行 - 将自定义目标节点添加到我们现有的 csproj:
<目标名称 之后目标="构建" 条件=" '$(配置)' == '调试' " 输入="我的文本文件.txt">
输出="MySqlFile.sql"标签="TXT2DB">目标名称> 生成后事件 - 使用生成后事件。提到完整性,但丢弃b/c它发生在调试和发布中,并且似乎对TXT文件更改不敏感。
目前,我们选择 #4 作为最容易导入和维护的解决方案,并满足所有要求。