簡體   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