在C#开发中,有时候需要在程序编译之前或之后做一些操作。
要达到这个目的,可以使用Visual Studio中的预先生成事件和后期生成事件。
下图是一个简单例子:
将工程目录中的一些资源文件和库文件拷贝到debug目录下
指定预先生成命令行
1. 在“解决方案资源管理器”中,右击要为其指定预先生成命令行的数据库项目,再单击“属性”。
2. 在“项目属性”窗口中单击“生成事件”选项卡。
3. 执行下列操作之一:
a. 如果已知要执行的命令行,请在“预先生成事件命令行”中键入要在生成数据库项目之前执行的命令行,然后转到步骤 5。
b. 如果要使用生成宏,请单击“编辑预先生成事件”。在“预先生成事件命令行”对话框中,键入要执行的命令行。可以单击列表中的宏并单击“插入”将其插入到命令行中。
4. 在完成命令行的编辑之后,请单击“确定”。
5. 在“文件”菜单上,单击“保存选定项”保存对项目属性进行的更改。下次生成数据库项目时,该命令行将在生成数据库项目之前执行。
指定后期生成命令行
1. 在“解决方案资源管理器”中,右击要为其指定后期生成命令行的数据库项目,再单击“属性”。
2. 在“项目属性”窗口中单击“生成事件”选项卡。
3. 执行下列操作之一:
c. 如果知道要执行的命令行,请在“后期生成事件命令行”中键入数据库项目生成后要执行的命令行,然后转到步骤 5。
d. 如果要使用生成宏,请单击“编辑后期生成事件”。在“后期生成事件命令行”对话框中,键入要执行的命令行。可以单击列表中的宏并单击“插入”将其插入到命令行中。
4. 在完成命令行的编辑之后,请单击“确定”。
5. 如果希望仅在生成成功时才运行命令行,请在“运行后期生成事件”列表中,单击“成功生成时”。如果希望命令行总是运行(即使生成失败时),请在“运行后期生成事件”列表中,单击“总是”。
6. 在“文件”菜单上,单击“保存选定项”保存对项目属性进行的更改。下次生成数据库项目时,该命令行将在生成数据库项目之后执行。
注意:应在运行 .bat 文件的每个后期生成命令之前添加 call 语句。例如,可以添加 call C:\MyFile.bat 或 call C:\MyFile.bat
部分宏列表
宏 |
说明 |
$(Configuration) |
当前项目配置的名称(例如,“Default”)。 |
$(MSBuildProjectName) |
项目的基名称。 |
$(MSBuildProjectExtension) |
项目的文件扩展名。它包括文件扩展名前面的“.”。 |
$(PlatformName) |
当前目标平台的名称(例如,“AnyCPU”)。 |
$(OutputPath) |
生成的主输出文件的路径名(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。 |
$(OutputType) |
项目的输出类型。对于数据库项目,此类型为“database”。 |
$(DBProduct) |
目标数据库项目的 Microsoft SQL Server 版本。此结果将为 SQL Server 2000 或 SQL Server 2005。 |
$(TargetDatabase) |
目标数据库的名称。 |
$(TargetConnectionString) |
用于连接到目标数据库当前驻留(或将驻留)的服务器的连接字符串。 |
$(MSBuildBinPath) |
MSBuild 二进制文件的路径(例如,C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727)。 |
$(DefaultSchema) |
非限定对象的默认架构。 |
$(DeploymentCollationPreference) |
如果指定,则为如何处理源和目标排序规则之间冲突的首选项。默认情况下,该首选项为 None。 |
$(AnsiNulls) |
有关更多信息,请参见数据库项目设置概述。 |
$(AnsiPadding) |
有关更多信息,请参见数据库项目设置概述。 |
$(AnsiWarnings) |
有关更多信息,请参见数据库项目设置概述。 |
$(ArithAbort) |
有关更多信息,请参见数据库项目设置概述。 |
$(ConcatNullYieldsNull) |
有关更多信息,请参见数据库项目设置概述。 |
$(NumericRoundAbort) |
有关更多信息,请参见数据库项目设置概述。 |
$(QuotedIdentifier) |
有关更多信息,请参见数据库项目设置概述。 |
$(SolutionDir) |
解决方案的目录(定义为驱动器 + 路径)。此结果包括尾部的反斜杠“\”。 |
$(SolutionPath) |
解决方案的绝对路径名(定义为驱动器 + 路径 + 基名称 + 文件扩展名)。 |
$(SolutionName) |
解决方案的基名称。 |
$(SolutionFileName) |
解决方案的文件名(定义为基名称 + 文件扩展名)。 |
$(SolutionExt) |
解决方案的文件扩展名。此结果包括文件扩展名前面的“.”。 |
$(DevEnvDir) |
Visual Studio 2005 的安装目录(定义为驱动器 + 路径)。此结果包括尾部的反斜杠“\”。 |
参考
https://msdn.microsoft.com/zh-cn/library/aa833213(v=vs.80).aspx