问题描述
我想从包文件夹中检索在项目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
和/或netstandard2.0
(或其他)文件夹,而package.config仅剩下一个不匹配的targetFramework="247"
属性。>
有人知道我应该如何处理吗?也许做错了吗?
解决方法
从package.json获取包文件夹中的项目依赖DLL
实际上,我很困惑为什么会收到targetframework="247"
。我想知道它是否被自己改变了。
所以请在工具-> NuGet软件包管理器-> 软件包管理器控制台update-package -reinstall / strong>重新安装您的nuget和依赖项。
targetframework
文件中的 packages.config
表示当前项目的框架版本。它指的是您当前项目的框架版本。在此框架版本下,将这些nuget软件包安装到项目中。
================================= / p>
请注意: 当nuget软件包安装其依赖项时,它会遵循最近获胜的规则。它将安装更接近项目框架版本的依赖项。 您可以选中this document about how NuGet resolves package dependencies。 例如,如果您的项目以 根据您的描述, 也,如this document所说, ================================================ =========== 如果 nuget软件包将安装 如果 如果您具有较新的版本依赖性,并且与您的主项目兼容,它将安装最新版本。 此外,您可以上传项目并检查 如果您的项目的目标是> = ====================== 测试 您可以创建两个项目,分别针对netframework4.7.2
为目标并且具有netframework 4.7.1
和netframework 4.6.2
之类的依赖项,它将安装依赖项的版本{最接近主项目net framework4.7.1
的{1}}。net472
具有Humanizer.Core
和net standard 1.0
之类的依赖性,netstandard 2.0
支持的最低版本为net standard 1.0
,net framework 4.5
支持的最低版本为net standard 2.0
。net standard 4.6.1
net framework 4.5。net framework 4.6.1
的依赖项。net standard 1.0
net framework 4.6.1的依赖项。net standard 2.0
文件的hintpath
,以查看项目使用了哪个版本的依赖项。xxx.csproj
,它将安装net framework 4.6.1
依赖项。net standard 2.0
和Net Framework4.5.2
。然后在这两个项目中安装此软件包以查看其行为。