将未引用的项目从解决方案复制到解决方案的启动项目

时间:2011-07-28 14:31:10

标签: .net msbuild prism

有没有将项目的输出从解决方案复制到当前启动项目的bin文件夹?甚至可以从MSBuild脚本中知道哪个项目是启动项目?我所说的项目是PRISM模块,由于它们的模块性,它们没有被shell项目引用。但是,我们仍将它们添加到我们的解决方案中

到目前为止,我们有一个非常巧妙的解决方案来调试我们的应用程序。我们的基础结构项目(在构建过程的最低级别)将删除... Shell \ bin \ Debug \ Modules文件夹。此应用程序的引导程序配置为直接从“模块”目录加载模块。所有模块项目都将其OutputPath配置为此文件夹。

这个构建过程的优点是我们可以通过简单地加载/卸载项目来选择我们想要调试的模块。 modules文件夹始终在清空时清空,仅构建已加载的项目。这是一种调试不同模块组合的无配置方式。

我们是如何开始使用我们已经为其他Shell创建的模块的新PRISM项目。现在我面临的问题是,这种舒适的设置不再适用。单个模块项目具有固定的OutputPath,开发人员无法在不同的解决方案中重复使用项目。

顺便说一句,它不是MSBuild脚本,但必须是自动化的。

编辑:我忘了强调一点,即同一个想法应该使用多个Prism Shell使用通用模块,并且我可以同时处理多个PRISM产品。这就是为什么我不能为所有文件夹使用共享输出路径。

2 个答案:

答案 0 :(得分:2)

您可以在MSBuild中指定AfterBuild目标来复制其他项目的输出,如下所示:

<Target Name="AfterBuild">
   <Copy SourceFiles="$(SolutionDir)MyProject1\bin\$(Configuration)\*.dll" DestinationFolder="$(TargetDir)"/>
   <!-- repeat for other projects -->
</Target>

AFAIK,找出启动项目并非易事,因为该信息存储在.suo文件中。您可以探索编写自己的MSBuild任务或扩展MSBuild Community task: GetSolutionProjects

答案 1 :(得分:1)

您可以配置&#34; new&#34;的OutputPath。项目指向相同的... Shell \ bin \ Debug文件夹作为&#34; shell&#34;应用。这样,新应用程序可以再次从相同的Modules文件夹加载其模块。不需要对系统的任何其他部分进行任何更改。