33 lines
2.1 KiB
XML
33 lines
2.1 KiB
XML
<Project>
|
|
<Import Project="../Directory.Build.targets" />
|
|
<Target Name="CopyPluginToHost" AfterTargets="Build"
|
|
Condition="'$(DesignTimeBuild)' != 'true' and '$(IsCrossTargetingBuild)' != 'true'">
|
|
<ItemGroup>
|
|
<!-- 一个部署子目录只容纳一个插件入口,清理重命名之前遗留的入口产物。 -->
|
|
<_ObsoletePluginDeps Include="$(PluginDeploymentDirectory)*.deps.json;$(TargetDir)*.deps.json"
|
|
Exclude="$(PluginDeploymentDirectory)$(TargetName).deps.json;$(TargetDir)$(TargetName).deps.json">
|
|
<EntryName>$([System.IO.Path]::GetFileNameWithoutExtension('%(Filename)'))</EntryName>
|
|
</_ObsoletePluginDeps>
|
|
<_ObsoletePluginEntry Include="@(_ObsoletePluginDeps)" />
|
|
<_ObsoletePluginEntry Include="@(_ObsoletePluginDeps->'%(RootDir)%(Directory)%(EntryName).dll')" />
|
|
<_ObsoletePluginEntry Include="@(_ObsoletePluginDeps->'%(RootDir)%(Directory)%(EntryName).pdb')" />
|
|
<_ObsoletePluginEntry Include="@(_ObsoletePluginDeps->'%(RootDir)%(Directory)%(EntryName).runtimeconfig.json')" />
|
|
</ItemGroup>
|
|
<Delete Files="@(_ObsoletePluginEntry)" />
|
|
<!-- MAX.Framework 的 Serilog 配置仅由宿主读取,同时清理旧插件部署目录中的副本。 -->
|
|
<Delete Files="$(PluginDeploymentDirectory)appsettings.Serilog.json" />
|
|
<ItemGroup>
|
|
<!-- 保留 runtimes 等子目录,包含入口、deps.json、配置及传递依赖。 -->
|
|
<_PluginDeploymentFile Include="$(TargetDir)**\*" Exclude="$(TargetDir)publish\**\*;$(TargetDir)appsettings.Serilog.json" />
|
|
</ItemGroup>
|
|
<Copy SourceFiles="@(_PluginDeploymentFile)"
|
|
DestinationFiles="@(_PluginDeploymentFile->'$(PluginDeploymentDirectory)%(RecursiveDir)%(Filename)%(Extension)')"
|
|
SkipUnchangedFiles="true" />
|
|
<FindHostDuplicatePluginFiles HostDirectory="$(StoreHostOutputPath)">
|
|
<Output TaskParameter="Duplicates" ItemName="_PluginDuplicateFile" />
|
|
</FindHostDuplicatePluginFiles>
|
|
<Delete Files="@(_PluginDuplicateFile)" />
|
|
<Message Importance="high" Text="插件已复制到 $(PluginDeploymentDirectory)" />
|
|
</Target>
|
|
</Project>
|