如何仅从特定目标框架的NuGet包还原程序集
我正在寻找一种方法来恢复NuGet包的程序集,该包的目标正好是一个框架,在本例中是net45 这是我的软件包配置:如何仅从特定目标框架的NuGet包还原程序集,nuget,command-line-interface,nuget-package,nuget-cli,Nuget,Command Line Interface,Nuget Package,Nuget Cli,我正在寻找一种方法来恢复NuGet包的程序集,该包的目标正好是一个框架,在本例中是net45 这是我的软件包配置: 这是我的NuGet配置文件: 版本为:NuGet版本:5.2.0.6090 运行:numget restore packages.config-ConfigFile numget.config还原所有targetframework版本的程序集,如下所示: E:\Tmp\NuGet\Nuget\Newtonsoft.Json.12.0.1>dir lib Direct
这是我的NuGet配置文件:
版本为:NuGet版本:5.2.0.6090
运行:numget restore packages.config-ConfigFile numget.config
还原所有targetframework
版本的程序集,如下所示:
E:\Tmp\NuGet\Nuget\Newtonsoft.Json.12.0.1>dir lib
Directory of E:\Tmp\NuGet\Nuget\Newtonsoft.Json.12.0.1\lib
2019-09-30 18:27 <DIR> .
2019-09-30 18:27 <DIR> ..
2019-09-30 18:27 <DIR> net20
2019-09-30 18:27 <DIR> net35
2019-09-30 18:27 <DIR> net40
2019-09-30 18:27 <DIR> net45
2019-09-30 18:27 <DIR> netstandard1.0
2019-09-30 18:27 <DIR> netstandard1.3
2019-09-30 18:27 <DIR> netstandard2.0
2019-09-30 18:27 <DIR> portable-net40+sl5+win8+wp8+wpa81
2019-09-30 18:27 <DIR> portable-net45+win8+wp8+wpa81
在以.NET Framework为目标的项目中安装此包时
NuGet将程序集安装在net45文件夹中,因为这是低于或等于4.6的最高可用版本
另一方面,如果项目的目标是.NETFramework4.6.1,那么NuGet
在net461文件夹中安装程序集
从上面的段落中,我了解到,当我设置目标框架时,我应该能够仅恢复该目标框架的程序集。在我的例子中,NuGet似乎完全忽略了targetFramework
属性,总是为所有目标框架安装DLL。将其从net45更改为net40没有效果
如何使NuGet restore仅对特定目标框架的包中的DLL进行还原?尝试从
targetFramework="net45"
到
我想你做不到
nuget(zip)包含所有框架
Nuget.exe所做的一切就是下载并解压缩文件。
你可以删除那些你不想要的吗
另外,为什么不直接使用\nuget.exe restore-Force-NoCache-Packagesdirectory。\nuget
而不是nuget配置文件呢
你可以通过创建自己的只包含框架的包来迷惑人们 为什么这对你很重要?你想要实现什么?如果您只需要与项目相关的程序集,那么在构建项目时,bin目录将包含所有组件,因为您的目标是.NET Framework TFM。对于.NET核心项目,您可以使用
dotnet publish
@zivkan。不幸的是,我将它与Unity一起使用,当Unity发现多个同名DLL时会抛出一个错误。问题是,根据MS文档,它应该可以工作,但它不是。感谢您的回答,但不幸的是,“4.5”不是一个有效的TFM,下面是我正在使用nuget.config文件的可能选项列表,因为它还包含一些内部自定义存储库。通过powershell删除我不需要的文档是我现在正在做的事情,但我正在寻找一种自动完成的方法,并基于我对它应该工作的文档的理解。另外,我知道这些包包含程序集的所有版本,但我不太明白目标frameworkFair关于配置的意义,我是基于您的示例。检查。它不是用来过滤它们,而是用来知道项目是否已经升级,因此引用是否旧。如果csproj与package.config不匹配,它会发出警告。如果Unity支持它,您也可以考虑使用新的CSPROJ格式。
targetFramework="net45"
targetFramework="4.5"