从 package.json 的包文件夹中获取项目依赖 DLL
Get project dependency DLL's in package folder from package.json
我想从包文件夹中检索项目 package.config 中注册的 NuGet 依赖 DLL。
package.config(样本):
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Humanizer.Core" version="2.6.2" targetFramework="net472" />
</packages>
结构:
- Folder
- ProjectFolder
- packages.config <-- config file
- Packages
- Humanizer.Core.2.6.2
- lib
- netstandard1.0
- Humanizer.DLL
- netstandard2.0
- Humanizer.DLL
- Solution
现在我可以从 package.config
中检索信息以获取 id + 版本一起知道我需要在 Packages
文件夹中的哪个文件夹中。然后我确定有一个 lib
文件夹,这样就可以了。但后来我卡住了。因为 lib
文件夹包含一个 netstandard1.0
and/or netstandard2.0
(或其他)文件夹,而 package.config 只剩下一个 targetFramework="247"
属性匹配。
知道我该如何处理吗?也许我做错了?
Get project dependency DLL's in package folder from package.json
实际上,我很困惑你为什么得到一个targetframework="247"
。不知道是不是自己改的
所以请在工具下运行update-package -reinstall
-->NuGet包管理器-->包管理器控制台重新安装你的 nuget 和依赖项。
packages.config
文件中的targetframework
表示您当前项目的框架版本。它指的是您当前项目的框架版本。在这个框架版本下的项目中安装这些nuget包。
=======================================
请注意:
当 nuget 包安装其依赖项时,它遵循规则最近获胜。它将安装更接近项目框架版本的依赖。
您可以检查this document about how NuGet resolves package dependencies。
举个例子,如果你的项目是 netframework4.7.2
的目标并且有像 netframework 4.7.1
和 netframework 4.6.2
这样的依赖项,它将安装最接近主项目 net472
.
的依赖项 net framework4.7.1
的版本
正如您的描述,Humanizer.Core
具有像 net standard 1.0
和 netstandard 2.0
、
这样的依赖性
也如this document所说,
net standard 1.0
支持的最低版本为net framework 4.5
,net standard 2.0
支持的最低版本为net standard 4.6.1
。
=========================================== ==============
If net framework 4.5
<= 你的主项目框架版本 < net framework 4.6.1
.
nuget包会安装net standard 1.0
的依赖。
如果net framework 4.6.1
<=你的主项目框架版本,nuget包会安装net standard 2.0
的依赖。
如果你有更新版本的依赖并且它与你的主项目兼容,它将安装最新版本。
除了,您可以上传您的项目并检查xxx.csproj
文件的hintpath
以查看项目使用的依赖项版本。
如果您的项目目标为 >=net framework 4.6.1
,它将安装 net standard 2.0
依赖项。
==========================
测试
并且您可以只创建两个分别针对 Net Framework4.5.2
和 Net Framework 4.7.2
的项目。然后在这两个项目中安装这个包以查看行为。
我想从包文件夹中检索项目 package.config 中注册的 NuGet 依赖 DLL。
package.config(样本):
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Humanizer.Core" version="2.6.2" targetFramework="net472" />
</packages>
结构:
- Folder
- ProjectFolder
- packages.config <-- config file
- Packages
- Humanizer.Core.2.6.2
- lib
- netstandard1.0
- Humanizer.DLL
- netstandard2.0
- Humanizer.DLL
- Solution
现在我可以从 package.config
中检索信息以获取 id + 版本一起知道我需要在 Packages
文件夹中的哪个文件夹中。然后我确定有一个 lib
文件夹,这样就可以了。但后来我卡住了。因为 lib
文件夹包含一个 netstandard1.0
and/or netstandard2.0
(或其他)文件夹,而 package.config 只剩下一个 targetFramework="247"
属性匹配。
知道我该如何处理吗?也许我做错了?
Get project dependency DLL's in package folder from package.json
实际上,我很困惑你为什么得到一个targetframework="247"
。不知道是不是自己改的
所以请在工具下运行update-package -reinstall
-->NuGet包管理器-->包管理器控制台重新安装你的 nuget 和依赖项。
packages.config
文件中的targetframework
表示您当前项目的框架版本。它指的是您当前项目的框架版本。在这个框架版本下的项目中安装这些nuget包。
=======================================
请注意:
当 nuget 包安装其依赖项时,它遵循规则最近获胜。它将安装更接近项目框架版本的依赖。
您可以检查this document about how NuGet resolves package dependencies。
举个例子,如果你的项目是 netframework4.7.2
的目标并且有像 netframework 4.7.1
和 netframework 4.6.2
这样的依赖项,它将安装最接近主项目 net472
.
net framework4.7.1
的版本
正如您的描述,Humanizer.Core
具有像 net standard 1.0
和 netstandard 2.0
、
也如this document所说,
net standard 1.0
支持的最低版本为net framework 4.5
,net standard 2.0
支持的最低版本为net standard 4.6.1
。
=========================================== ==============
If net framework 4.5
<= 你的主项目框架版本 < net framework 4.6.1
.
nuget包会安装net standard 1.0
的依赖。
如果net framework 4.6.1
<=你的主项目框架版本,nuget包会安装net standard 2.0
的依赖。
如果你有更新版本的依赖并且它与你的主项目兼容,它将安装最新版本。
除了,您可以上传您的项目并检查xxx.csproj
文件的hintpath
以查看项目使用的依赖项版本。
如果您的项目目标为 >=net framework 4.6.1
,它将安装 net standard 2.0
依赖项。
==========================
测试
并且您可以只创建两个分别针对 Net Framework4.5.2
和 Net Framework 4.7.2
的项目。然后在这两个项目中安装这个包以查看行为。