Files
StoreWeb/Plugins/Directory.Build.targets
T
2026-11-02 17:58:37 +08:00

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>