.net - 将非引用项目从解决方案复制到解决方案的启动项目

标签 .net msbuild prism

是否有办法将项目的输出从解决方案复制到当前启动项目的 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/

相关文章:

c# - 动态添加字典中的键

c# - 提高 DevEx WPF 网格的性能

c# - Visual Studio 不触发 MSBuild

visual-studio-2010 - VS2010/MSBuild 4.0 构建外部项目

c# - 如何在 wpf 中使用 Prism 打开新的模态对话框

c# - Windows 窗体是否有任何开源或免费的图形/报告/图表框架?

c# - 为什么我在 vb 中得到不明确的调用,而在 c# 中却没有?

azure - 如何通过命令行将 Web 部署包部署到 Azure 网站?

wpf - ViewModel 中 IDisposable 内存泄漏,为什么?

runtime - 使用 Autofac 进行运行时注册