【问题标题】:Get absolute paths to NuGet dependency libraries via MSBuild通过 MSBuild 获取 NuGet 依赖库的绝对路径
【发布时间】:2018-09-19 14:39:05
【问题描述】:

我正在尝试在共享库中编写一个自定义目标,这将允许我提取我们项目的所有 NuGet 依赖项,以便运行 ILRepack 以隐藏依赖项。

我的主要挑战是该项目是跨 net45、net46 和 netstandard2.0 的多目标。如果不是这种情况,直接使用 NuGet 中现成的 ILRepack 目标之一将相当简单。

我正在尝试的是,在构建完成并构建我们的 DLL 之后,手动枚举依赖的 DLL 路径,将它们复制到已知位置,然后在我们的 DLL 上运行 ILRepack 以合并所有依赖项。我想通过 MSBuild 来实现这一点,以避免编写复杂的脚本来检索多个目标框架的依赖关系。

我一直专注于通过运行dotnet msbuild /pp:fullproj.xml 创建的完整项目 xml 导出来进行调查。作为构建过程的一部分,是否有可用的目标或输出参数可以让我提取所有 .dll 文件的绝对路径,这些文件通常会在最终的 .nupkg 中结束?

TL;DR 我是否有一种内置方法可以枚举 MSBuild 目标中所有 NuGet 依赖 DLL 的绝对路径?

【问题讨论】:

    标签: c# msbuild nuget


    【解决方案1】:

    您可以从ILRepack.Lib.MSBuild.Task 尝试 msbuild 任务。 此任务允许您定义一个名为 ILRepack.targets 的文件,其中包含所需的目标并允许自定义构建过程。 这在类似的情况下帮助了我。

    【讨论】:

    • 我确实尝试使用 NuGet 上可用的几个 ILRepack 任务,但似乎依赖项的路径仅在 net45 或 net46 构建期间可用 - 当 netatandard2.0 目标运行时,没有相关 DLL 的文件路径可用。
    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 2011-12-29
    • 2020-06-27
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2013-03-31
    相关资源
    最近更新 更多