我想获得.csproj
中引用的所有程序集的路径,并给出以下要求:
.dll
导入)关于如何为项目引用执行此操作有good answer:
<MSBuild Projects="@(ProjectReference)" Targets="GetTargetPath">
<Output TaskParameter="TargetOutputs" ItemName="MyReferencedAssemblies" />
</MSBuild>
是否有类似方法来获取所有其他类型引用的.dll
路径?
答案 0 :(得分:3)
似乎有一种干净的方法:
<Target Name="GatherReferences" DependsOnTargets="ResolveReferences">
<ItemGroup>
<MyReferencedAssemblies Include="@(ReferencePath)" />
</ItemGroup>
</Target>
之后MyReferencedAssemblies
项组包含所有引用的DLL的集合(完整路径,各种类型)。它也适用于PackageReference
格式的.csproj
导入。重要的是,@(ReferencePath)
仅在ResolveReferences
完成后才为非空。
答案 1 :(得分:1)
看起来TargetOutput会给你想要的东西,因为你正在寻找输入。
如果您使用MSBuild API(使用c#),这应该是一件小事。你可以看到我如何扩展Project
类以包含这样的东西:
https://github.com/chris1248/SolutionBuilder/blob/master/MSBuildTools/ProjectBase.cs
具体看看功能:
protected int GatherReferenceAssemblies()