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



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

到目前为止,我们有一个非常简洁的解决方案来调试我们的应用程序。我们的基础设施项目(它是构建过程的最低级别)将删除一个…外壳 bin 调试模块文件夹中。这个应用的引导程序被配置为直接从"modules"目录中加载模块。所有模块项目的OutputPath都配置到这个文件夹。

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

如何,我们开始了一个新的PRISM项目,它使用我们已经为另一个Shell创建的模块。现在我面临的问题是,这个舒适的设置不能再工作了。单个模块项目具有固定的OutputPath,开发人员无法在不同的解决方案中重用这些项目而不会出现问题。

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

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

你可以在MSBuild中指定一个AfterBuild目标来复制其他项目的输出,像这样:

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

AFAIK,发现启动项目是不平凡的,因为信息存储在。suo文件。您可以探索编写自己的MSBuild任务或扩展MSBuild社区任务:GetSolutionProjects

您可以配置您的"new"项目的OutputPath指向相同的…ShellbinDebug文件夹作为你的"Shell"应用程序。这样,新应用程序就可以再次从同一个modules文件夹中加载它的模块。不需要更改系统的任何其他部分。

最新更新