gpt4 book ai didi

MSBuild 将另一个项目的输出复制到当前项目的输出中

转载 作者:行者123 更新时间:2023-12-02 02:22:34 24 4
gpt4 key购买 nike

我遇到了一种情况,我想使用 MSBuild 将一个项目的输出程序集复制到目标应用程序的输出目录中,而无需在 MSBuild 复制任务中硬编码路径。场景如下:

  • 项目 A - Web 应用程序项目
  • 项目 B - Dal 接口(interface)项目
  • 项目 C - Dal 实现项目

还有一个业务层,但与我要解决的 MSBuild 问题无关。

我的业务层引用了我的 Dal.Interface 项目。我的 Web 项目引用了业务层,就目前情况而言,进行构建会将业务层和 Dal.Interface 项目拉入输出中。到目前为止,一切都很好。现在为了运行 Web 应用程序,它需要 Dal 实现。我不希望在任何地方引用实现,因为我想对接口(interface)强制编码,并且没有引用意味着它不会显示在智能感知等中。

所以我想我可以通过 MSBuild 复制操作作为 AfterBuild 任务来处理这个问题(我有 Dal 实现设置要在 Web 项目构建时构建,只是没有引用)。我不想在 MSBuild 参数中对路径或其他任何内容进行硬编码,因此我试图弄清楚如何从 Web 应用程序项目的 MSBuild 文件引用 Dal 项目的输出。

因此,基于上述项目,这就是我希望看到的情况:

  1. 网络应用构建已启动
  2. 构建所有必需的项目(已配置,因此已完成)
  3. MSBuild“AfterBuild”任务启动,项目 C(Dal 实现)的输出将复制到项目 A(Web 应用)的 Bin 目录

第 3 部分是我陷入困境的地方。

我确信这是可以做到的,我只是没有找到好的引用来帮助解决。预先感谢您的帮助。

最佳答案

我已经完成了这项工作,尽管我很想找到一个更干净的解决方案,该解决方案利用 MSBuild 中的内置参数(如 $(TargetDir) 等),但要指出我想要获取输出的项目)。无论如何,这就是我所做的:

<Target Name="AfterBuild">
<Copy SourceFiles="$(SolutionDir)MyProject.Dal.Linq\bin\$(Configuration)\MyProject.Dal.Linq.dll" DestinationFolder="$(TargetDir)"/>
</Target>

我很想看到一个更干净的解决方案,但现在应该可以了。

关于MSBuild 将另一个项目的输出复制到当前项目的输出中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/266888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com