【问题标题】:creating nuget: can not package referenced dlls创建nuget:无法打包引用的dll
【发布时间】:2015-05-09 17:11:47
【问题描述】:

我正在尝试使用“Nuget Package Explorer”创建一个 nuget。该项目引用了 2 个以 .net4.0 为目标的 dll,主 dll 以 .net4.5 为目标。

按照指定,我将 2 个引用的 dll 放在名为“net40”的“lib”文件夹内的文件夹中,主 dll 放在名为“net45”的文件夹中,然后我推送了位于 here 的 nuget p>

但是当我尝试在另一个项目中安装它时,它不需要任何 dll!

我做错了吗?

谢谢。

更新:

nuget 包包含:

lib (folder)
    net45 (folder)
        MainAssembly.dll -> targets .net_4.5
        Microsoft.VisualStudio.TextTemplating.10.0 -> targets .net_4
        Microsoft.VisualStudio.TextTemplating.Interfaces.10.0 -> targets .net_4

注释:

  • MainAssembly 需要另外两个程序集
  • 我只想定位 .net 4.5 版

问题:

使用上述结构创建 nuget 包不起作用,在新项目中安装 nuget 时,MainAssembly 未添加引用列表,仅添加了其他两个程序集。

【问题讨论】:

    标签: c# .net dll nuget nuget-package


    【解决方案1】:

    该项目引用了 2 个 dll,它们的目标是 .net4.0,主 dll 的目标是 .net4.5。

    按照指定,我将 2 个引用的 dll 放在名为“net40”的“lib”文件夹内的文件夹中,主 dll 放在名为“net45”的文件夹中,然后我推送了位于 here 的 nuget p>

    一个 NuGet 包可以针对多个 .NET 框架版本。但是,.NET 项目不能。

    您的依赖程序集必须放在相同的 .NET 框架版本文件夹中,以便它们安装到目标项目中。因此,如果您希望 NuGet 包以 4.0 和 4.5 为目标,则结构应如下所示:

    lib
        net40
            MainAssembly.dll
            DependentAssembly1.dll
            DependentAssembly2.dll
        net45
            MainAssembly.dll
            DependentAssembly1.dll
            DependentAssembly2.dll
    

    每个组中的主程序集必须以与父文件夹相同的框架版本为目标。依赖程序集可以针对与目标版本相同或更低的任何版本。

    请注意,通常每个程序集都打包为单独的 NuGet 包,并且 NuGet 包相互依赖,而不是将依赖的程序集放入同一个包中。

    【讨论】:

    • 谢谢,我明白你的意思。但是现在当我将所有 dll 放在 v45 文件夹中时,它也不起作用,nuget 只会抓取依赖程序集而不是主要程序集。
    • 请注意,在我的例子中:mainassembly.dll 面向 4.5,而两个依赖程序集面向 4.0。将它们全部放在同一个 4.5 中似乎不起作用。
    • 您的主程序集必须面向 v4.0(或更低版本)才能放入 net40 文件夹,否则将无法安装到 v4.0 目标项目中。在 net45 文件夹中,它可以针对 v4.5。请参阅this post,了解如何设置项目以构建多个 .NET 框架版本。请注意,您的问题不清楚您的目标项目(您将在其中安装此 NuGet 包的项目)正在使用哪个 .NET 框架版本,这正是这些文件夹发挥作用的地方。
    • 抱歉不清楚,我添加了问题的更新。
    猜你喜欢
    • 2019-10-11
    • 1970-01-01
    • 2017-09-02
    • 2021-05-29
    • 2014-07-16
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 2016-04-16
    相关资源
    最近更新 更多