有一些 nuget 包,其中dll
s 只存在于一个目标框架中,比如这个:
- lib
- net40
SolidWorks.Interop.sldworks.dll
SolidWorks.Interop.swconst.dll
SolidWorks.Interop.swpublished.dll
无论我为消费项目选择哪个目标框架 - 例如net48
, netcoreapp3.1
, net5.0-windows
-net6.0-windows
它都将始终使用net40
文件夹中的内容。
我最近使用上面列出的四个目标框架从一个项目中创建了一个 nuget,这导致在 nuget 包中创建了以下文件夹结构:
- lib
- net48
MyDll.dll
- netcoreapp3.1
MyDll.dll
- net5.0-windows7.0
MyDll.dll
- net6.0-windows7.0
MyDll.dll
出于兼容性原因,我必须将该net48
版本用于我的所有消费项目的目标net48
或更高版本。所以我刚刚从我的 nuget 中删除了netcoreapp3.1
,net5.0-windows7.0
和net6.0-windows7.0
文件夹来获取
- lib
- net48
MyDll.dll
,但随后是使用目标框架的消费项目netcoreapp3.1
,net5.0-windows
或者net6.0-windows
抱怨它找不到命名空间、类等。
所以在这种情况下,nuget 和 project 之间的目标框架确实需要匹配。
什么时候?我怎么能影响这个?
我的目标是创建一个 nuget 包,其中只包含一个包含 s 的子文件夹lib
,dll
以便
- 没有具有以下目标框架的项目
net48
可以使用它 - 所有具有目标框架
net48
或更新的项目都可以使用它。