2016-03-08 237 views
3

假设我们有三个项目的解决方案:运行C#控制台应用程序

enter image description here

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

我知道如何使用生成菜单中的Configuration Manager来重新排序这三个项目的构建。但的主要问题是:我怎样才能定制的解决方案,这样的构建过程:

  • 它首先构建DownloadDataBase
  • 然后执行该控制台应用程序DownloadDataBase
  • 该副本的创建sqlite文件后从最后一步到Test项目的资源目录
  • 最后使用更新的sqlite文件构建Test项目?

所以每次我建立新的发布时间,我会通过我的应用程序所需的最新数据。

感谢所有帮助

+0

查看每个项目属性中的“编译事件”。也许你在找什么 – Pikoh

+0

这是在本地运行还是在tfs构建服务器上运行?如果tfs:您可以在构建模板(xaml文件)中定义自定义步骤。本地:创建“DownloadDatabaseProject”的独立可执行文件,并将其作为Test程序的预填充步骤启动(可以将其设置为测试项目的属性,在Build Events选项卡下进行设置) –

+0

@NickOtten不再是XAML; P XAML死于TFSBuild –

回答

2

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

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

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

也许有一些错误,但在这一天结束时,你需要使用MSBuild任务来执行这些操作。

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

+0

如果你在文件名或父母之间有空格文件夹,您将收到代码为9009的退出错误 – Dreamweaver

相关问题