繁体   English   中英

如何从引用的NuGet程序包中正确选择程序集?

[英]How do I properly choose assemblies from referenced NuGet packages?

我正在使用NuGet.Core库以编程方式安装软件包; 这也会自动安装该软件包的所有依赖项,但是其中一些软件包是多目标的,并且包含用于不同.NET版本的程序集的多个版本。
我如何从这些多目标程序包中选择正确的程序集版本(即,与从Visual Studio中手动安装NuGet程序包时使用的方法相同)?

您可以使用VersionUtility类来查找兼容的项目。 这是将NuGet软件包安装到项目中时NuGet所做的。 您传递所有项目的列表(例如NuGet包中的引用)和目标框架名称(例如“ .NETFramework,Version = 4.0”),并且VersionUtility类将返回兼容的项目。

摘自NuGet.Core的一些示例代码,并稍作修改:

List<IPackageAssemblyReference> assemblyReferences =
    GetCompatibleItems(package.AssemblyReferences).ToList();

static IEnumerable<T> GetCompatibleItems<T>(FrameworkName targetFramework, IEnumerable<T> items) where T : IFrameworkTargetable
{
        IEnumerable<T> compatibleItems;
        if (VersionUtility.TryGetCompatibleItems(targetFramework, items, out compatibleItems))
        {
                return compatibleItems;
        }
        return Enumerable.Empty<T>();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM