我使用NuGet.Core库以编程方式安装包;这也会自动安装包的所有依赖项,但其中一些包是多目标的,包含针对不同.NET版本的多个程序集版本。
如何从这些多目标包中选择正确版本的程序集(也就是在Visual中手动安装NuGet包时所用的方式)?
发布于 2015-12-24 14:13:53
可以使用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>();
}https://stackoverflow.com/questions/34450270
复制相似问题