北京城建道桥建设网站,长沙防疫优化,门户网站建设管理情况自查报告,html 网站源码 卖手机前言在VS中打开项目属性#xff0c;选择“生成事件”选项卡。在“生成前事件命令行”或“生成后事件命令行”文本框中可以输入任何命令提示符或.bat文件中有效的命令#xff1a;但是#xff0c;有没有可能执行更丰富的命令呢#xff1f;生成事件的本质上面设置的“生成事件… 前言在VS中打开项目属性选择“生成事件”选项卡。在“生成前事件命令行”或“生成后事件命令行”文本框中可以输入任何命令提示符或.bat文件中有效的命令但是有没有可能执行更丰富的命令呢生成事件的本质上面设置的“生成事件”保存在哪编辑项目文件可以看到它实际上是一个MsBuild目标执行Exec任务Target NamePreBuild BeforeTargetsPreBuildEventExec Commanddel d:\$(TargetFileName) /
/TargetTarget NamePostBuild AfterTargetsPostBuildEventExec Commandcopy $(OutDir)\$(TargetFileName) d:\$(TargetFileName) /
/Target生成前事件是在PreBuildEvent目标前运行生成后事件是在PostBuildEvent目标后运行。执行多任务既然是MsBuild目标那就不光可以执行Exec任务了。我们可以同时执行多个MsBuild内置任务比如将bin\Debug\net5.0目录中的所有文件复制到d:\tmpTarget NamePostBuild BeforeTargetsPostBuildEventMessage Text生成后事件开始 /RemoveDir Directoriesd:\tmp /CreateItem Include$(TargetDir)*.*Output TaskParameterInclude ItemNameCopyFiles //CreateItemCopy SourceFiles(CopyFiles)DestinationFolderd:\tmp/Message Text生成后事件结束 /
/TargetMessage 记录一条消息RemoveDir 删除指定的目录及其所有文件和子目录CreateItem 使用输入项目填充项目集合这里用来生成文件列表Copy 将文件复制到指定位置更多任务详情请查看MSBuild 任务参考[1]可以看到执行正常执行C#代码如果现成的任务不能满足要求我们还可以编写C#代码实现任务。当然不是编写exe而是使用内联任务[2]。比如输出一条错误日志UsingTask
TaskNameHelloWorld
TaskFactoryCodeTaskFactory
AssemblyFile$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll
ParameterGroup /
TaskUsing NamespaceSystem/Using NamespaceSystem.IO/Code TypeFragment Languagecs
![CDATA[Log.LogError(Hello, My IO!);
]]/Code
/Task
/UsingTaskTarget NamePreBuild BeforeTargetsPreBuildEventHelloWorld /
/Target结论通过本文你可以了解到如何自定义VS生成事件。如果你觉得这篇文章对你有所启发请关注我的个人公众号”My IO“记住我参考资料[1]MSBuild 任务参考: https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-task-reference?viewvs-2019[2]内联任务: https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-inline-tasks?viewvs-2019