排除 nuget 包中与平台无关的资源
2024-11-03 21:35:01
项目中引用了一个第三方包,在编译时输出目录下多了所有平台相关的动态库文件,导致占用了很多不必要的空间。而我只是需要 Windows 平台的资源而已。
RuntimeIdentifier
研究后发现 nuget 包会根据 RuntimeIdentifier 属性决定将哪些平台的资源拷贝到输出目录下。
但我们项目可能存在多种架构的支持,而这个属性却只能写一个RID
,怎么办呢?动态地根据当前Platform
去设置就行了:
1 | <PropertyGroup Condition="'$(RuntimeIdentifier)|$(Platform)' == '|AnyCPU'"> |
这里只简单考虑 Windows 系统,跨平台项目还要加入更多验证条件。
实际上这个属性标准用法是在使用发布
功能时由命令行设置或在pubxml
文件中指定的。
因为在很早以前没有发布
的概念,都是将项目用 Release 编译后就行了。只有在不使用发布
功能时才可以考虑自己去设置RuntimeIdentifier
。
相关阅读
.NET RID Catalog
.NET Core RuntimeIdentifier vs TargetFramework
PortableRuntimeIdentifierGraph.json