在构建过程中运行c#控制台应用程序
假设我们有一个包含三个项目的解决方案:在构建过程中运行c#控制台应用程序,c#,visual-studio,build,msbuild,build-process,C#,Visual Studio,Build,Msbuild,Build Process,假设我们有一个包含三个项目的解决方案: DownloadDataBase是一个控制台应用程序,它从web下载数据并创建一个sqlitedb文件 Test是使用下载的sqlite数据库的应用程序的主窗口 TestLibrary是测试项目引用的类库 我知道如何使用build菜单中的configurationmanager对这三个项目的构建进行重新排序。但是主要问题是:如何定制解决方案的构建过程,以便: 它首先构建下载数据库 然后执行此控制台应用程序DownloadDataBase 之后,将创建的
DownloadDataBase
是一个控制台应用程序,它从web下载数据并创建一个sqlite
db文件Test
是使用下载的sqlite
数据库的应用程序的主窗口TestLibrary
是测试项目引用的类库configurationmanager
对这三个项目的构建进行重新排序。但是主要问题是:如何定制解决方案的构建过程,以便:
- 它首先构建
下载数据库
- 然后执行此控制台应用程序
DownloadDataBase
- 之后,将创建的
文件从最后一步复制到sqlite
项目的资源目录Test
- 最后使用更新的
文件构建sqlite
项目Test
感谢您的帮助您需要自定义MSBuild项目文件(即
.csproj
文件)
例如,在DownloadDatabase项目中,在XML文件底部的
元素中添加:
<Target AfterTargets="AfterBuild">
<Exec Command="$(ProjectDir)$(OutputPath)$(AssemblyName).$(OutputType)" />
<Copy SourceFiles="$(ProjectDir)$(OutputPath)file.db" DestinationFolder="$(SolutionDir)Test" />
</Target>
可能有一些错误,但最终需要使用MSBuild任务来执行这些操作
有关详细信息,请参阅和MSBuild任务文档页。查看每个项目属性中的“编译事件”。也许您正在寻找的是本地运行还是在tfs构建服务器上运行?如果是tfs:您可以在构建模板(xaml文件)中定义自定义步骤。本地:制作“DownloadDatabaseProject”的独立可执行文件,并将其作为测试程序的预构建步骤启动(您可以在测试项目的属性中设置它,它位于“构建事件”选项卡下)@NickOtten不再是XAML;P XAML死在TFSBuild@Mat我有更多的理由开始对老板唠叨一段时间update@NickOtten是的,XAML是一场噩梦……如果文件名或任何父文件夹之间有空格,您将得到错误退出,代码为9009