是否有办法将项目的输出从解决方案复制到当前启动项目的 bin 文件夹中?是否有可能从 MSBuild 脚本中知道哪个项目是启动项目?我所说的项目是 PRISM 模块,由于它们的模块化,它们不会被 shell 项目引用。但是,我们仍然将它们添加到我们的解决方案中。
到目前为止,我们有一个非常简洁的解决方案来调试我们的应用程序。我们的基础设施项目(这是构建过程的最低级别)将删除 ...Shell\bin\Debug\Modules 文件夹。该应用程序的 Bootstrap 配置为直接从“Modules”目录加载模块。所有模块项目都将其 OutputPath 配置到此文件夹。
此构建过程的优点是我们可以通过简单地加载/卸载项目来选择要调试的模块。模块文件夹在开始时始终为空,并且仅构建加载的项目。这是一种调试不同模块组合的免配置方法。
如何,我们启动了一个新的 PRISM 项目,该项目使用我们已经为其他 Shell 创建的模块。现在我面临的问题是这种舒适的设置不再适用。单个模块项目具有固定的 OutputPath,开发人员无法在不同的解决方案中毫无问题地重用这些项目。
顺便说一句,它不能是 MSBuild 脚本,但必须是自动化的。
编辑:我忘记强调这一点,即相同的想法应该适用于使用通用模块的多个 Prism Shell,并且我可以同时处理多个 PRISM 产品。这就是为什么我不能对所有文件夹使用共享输出路径。
最佳答案
您可以在 MSBuild 中指定 AfterBuild
目标来复制其他项目的输出,如下所示:
<Target Name="AfterBuild">
<Copy SourceFiles="$(SolutionDir)MyProject1\bin\$(Configuration)\*.dll" DestinationFolder="$(TargetDir)"/>
<!-- repeat for other projects -->
</Target>
据我所知,找出启动项目并不简单,因为该信息存储在 .suo 文件中。您可以探索编写自己的 MSBuild 任务或扩展 MSBuild Community task: GetSolutionProjects
关于.net - 将非引用项目从解决方案复制到解决方案的启动项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6860688/