上一篇《Nuget 輸出資源文件 - 唐宋元明清2188 - 博客園 (cnblogs.com)》有介紹如何輸出Nuget中資源文件
團隊小夥伴說,組件附帶的資源文件太大了,有些場景引用不需要輸出。
那如何針對項目上的引用,設置Nuget包不輸出資源文件?
如下面截圖所示,Nuget包有.pakcages文件夾以及文件隨編譯輸出。
一 設置ExcludeAssets
在PackageReference項,添加屬性ExcludeAssets
1 <ItemGroup> 2 <PackageReference Include="NugetContentFiles" Version="1.0.18" ExcludeAssets="contentFiles"/> 3 </ItemGroup>
這裏是排除內容輸出的文件。
不同資源文件輸出方式,要設置的方式不一樣。有些設置輸出在lib文件夾,有些設置在自定義文件夾。具體的ExcludeAssets使用,詳見 項目文件中的 NuGet PackageReference | Microsoft Learn
值得注意的是,ExcludeAssets只能設置枚舉項,不能通過*號等匹配文件夾/文件。
二 AfterBuild編譯後刪除
一個Nuget中有多類資源文件,但只想輸出/保留一類資源文件時,上面的方案就不適合了。
熟悉使用targets後,我們能在編譯前後做很多事情。這裏我們可以在編譯後,刪除多餘的資源文件,相當於Nuget未輸出相應文件。
1 <Target Name="AfterBuildDelete" AfterTargets="AfterBuild"> 2 <RemoveDir Directories="$(OutputPath).packages"/> 3 <Delete Files="$(OutputPath)vcomp140d.dll" TreatErrorsAsWarnings="True"/> 4 </Target>
上面展示了,刪除.packages文件夾以及同一層級的vcomp140d.dll文件。