我试图在共享库中编写一个自定义目标,这将允许我提取项目的所有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的绝对路径?
答案 0 :(得分:0)
您可以尝试从ILRepack.Lib.MSBuild.Task开始进行msbuild任务。 通过此任务,您可以定义一个名为ILRepack.targets的文件,该文件包含必需的目标并允许自定义构建过程。 这在类似情况下对我有帮助。