在构建过程中运行 ac# 控制台应用程序

a.t*_*aby 5 c# msbuild build-process build visual-studio

假设我们有一个包含三个项目的解决方案:

在此输入图像描述

  1. DownloadDataBase是一个控制台应用程序,它从网络下载数据并创建sqlite数据库文件
  2. Test是使用下载的数据库的应用程序的主窗口sqlite
  3. TestLibrary是测试项目引用的类库。

我知道如何使用构建菜单重新排序这三个项目的构建Configuration Manager。但主要问题是:我如何自定义解决方案的构建过程,以便:

  • 它首先构建DownloadDataBase
  • 然后执行这个控制台应用程序DownloadDataBase
  • 之后将sqlite上一步创建的文件复制到项目的资源目录Test
  • 最后Test使用更新的sqlite文件构建项目?

因此,每次构建新版本时,我都会获得应用程序所需的最新数据。

谢谢你的帮助

Mat*_*zer 6

您需要自定义 MSBuild 项目文件(即.csproj文件)。

例如,在DownloadDatabase项目中,在 XML 文件底部的<project>元素内添加:

<Target AfterTargets="AfterBuild">
    <Exec Command="$(ProjectDir)$(OutputPath)$(AssemblyName).$(OutputType)" />
    <Copy SourceFiles="$(ProjectDir)$(OutputPath)file.db" DestinationFolder="$(SolutionDir)Test" />
</Target>
Run Code Online (Sandbox Code Playgroud)

也许存在一些错误,但最终,您需要使用 MSBuild 任务来执行这些操作。

请参阅ExecCopy MSBuild 任务文档页面以获取更多详细信息。