通过MSBuild

时间:2018-09-19 14:39:05

标签: c# msbuild nuget

我试图在共享库中编写一个自定义目标,这将允许我提取项目的所有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的绝对路径?

1 个答案:

答案 0 :(得分:0)

您可以尝试从ILRepack.Lib.MSBuild.Task开始进行msbuild任务。 通过此任务,您可以定义一个名为ILRepack.targets的文件,该文件包含必需的目标并允许自定义构建过程。 这在类似情况下对我有帮助。