0%

Visual Studio复制项目引用文件到指定文件夹

实现每次编译后自动复制引用到指定路径

方法

将下述xml配置复制到项目配置文件*.csproj末尾(</Project>标签之前)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!-- 只复制当前项目直接引用的 DLL(NuGet + 本地 Reference),排除项目引用 -->
<Target Name="CopyDirectReferencedDlls" AfterTargets="Build">
<ItemGroup>
<!-- ReferencePath 包含所有已解析的引用路径 -->
<!-- 但项目引用的 DLL 路径通常在 _ResolvedProjectReferencePaths 中,通过条件排除 -->
<_DirectReferenceDlls Include="@(ReferencePath)"
Condition="'%(ReferencePath.IsProjectReference)' != 'true' AND '%(Extension)' == '.dll'" />
</ItemGroup>

<!-- 目标文件夹 -->
<PropertyGroup>
<DirectDllsTargetFolder>$(ProjectDir)dll\</DirectDllsTargetFolder>
<!-- 或者用绝对路径: <DirectDllsTargetFolder>D:\MyLibs\</DirectDllsTargetFolder> -->
<!-- 或者用宏:$(SolutionDir)SharedLibs\ -->
</PropertyGroup>

<Copy SourceFiles="@(_DirectReferenceDlls)"
DestinationFolder="$(DirectDllsTargetFolder)"
SkipUnchangedFiles="true"
OverwriteReadOnlyFiles="true" />

<Message Text="已复制直接引用 DLL 到 $(DirectDllsTargetFolder) (共 @( _DirectReferenceDlls->Count() ) 个)"
Importance="high" />
</Target>