如何在nuspec文件中指定当前项目的Target framework?
如何在NuSpec文件中用项目Target Framework替代硬编码的框架版本
当然可以实现你想要的效果!你设想的$targetframework$变量写法完全正确,不过有几个小细节需要注意,确保它能正常工作:
- 如果你用NuGet CLI的
pack命令打包,记得加上-p:TargetFramework=你的框架版本参数;如果是直接在Visual Studio里右键项目选“打包”,它会自动读取项目里设置的Target Framework值,不用额外加参数。 - 你的nuspec代码可以直接写成这样:
NuGet会自动把<files> <file src="bin\$configuration$\$id$.pdb" target="lib\$targetframework$\" /> </files>$targetframework$替换成项目里配置的框架标识符(比如net45、net6.0这类),以后升级项目框架时,完全不用手动改nuspec文件。
至于你提到的dll自动进入对应框架文件夹的情况,这是因为从项目文件打包时,NuGet会自动把编译好的dll和相关文件放到lib\$targetframework$目录下,而pdb文件需要你手动在nuspec里配置,这样就能保证pdb和dll放在同一个框架目录里了。
如果以后需要支持多目标框架,还可以用复数形式的$targetframeworks$变量或者通配符,但单目标框架的场景下,$targetframework$就足够好用了。
内容的提问来源于stack exchange,提问作者Craig
相关产品推荐
相关产品推荐

