如何通过修改nuspec文件从NuGet包中移除冗余DLL
如何通过修改nuspec文件排除NuGet包中的非必需DLL
你可以在nuspec文件的<package>节点下添加<files>节点,通过精确控制文件的包含与排除规则,无需修改.csproj就能移除不必要的DLL。
修改后的完整nuspec示例
<package > <metadata> <id>myProject.csproj</id> <version>1.0.0</version> <authors>user</authors> <owners>user</owners> <requireLicenseAcceptance>false</requireLicenseAcceptance> <description>Test package 1</description> <releaseNotes>Summary of changes.</releaseNotes> <copyright>Copyright 2023</copyright> <tags>Tag test</tags> </metadata> <!-- 添加文件控制节点 --> <files> <!-- 包含项目主输出的DLL和调试符号文件 --> <file src="bin\Release\myProject.dll" target="lib\net6.0" /> <file src="bin\Release\myProject.pdb" target="lib\net6.0" /> <!-- 排除不需要的DLL,多个文件用分号分隔 --> <file src="bin\Release\*.dll" target="lib\net6.0" exclude="不需要的DLL1.dll;不需要的DLL2.dll" /> </files> </package>
关键规则说明
- src:指定要打包的文件路径,注意替换成你实际的输出目录(比如
bin\Debug)和目标框架(比如把net6.0换成你的项目对应框架)。 - target:指定文件在NuGet包中的存放位置,类库包通常放在
lib\[目标框架]目录下。 - exclude:用具体文件名或通配符排除非必需文件,多个文件用分号分隔。如果要保留主DLL并排除其余所有依赖DLL,也可以只明确包含主DLL,不添加其他通配符包含规则。
如果不确定要排除的文件路径,可以先解压已生成的nupkg包,查看内部文件结构后再针对性编写排除规则。
内容的提问来源于stack exchange,提问作者He-Man
相关产品推荐
相关产品推荐

