【问题标题】:Defining dependencies between .dll in NuGet packages在 NuGet 包中定义 .dll 之间的依赖关系
【发布时间】:2012-12-20 04:20:02
【问题描述】:

我已经定义了一个类似如下的 nuget nuspec 文件:

<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
    <id></id>
    <version></version>
    <title></title>
    <authors></authors>
    <owners />
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description></description>
    <references>
        <reference file="A.dll" />
    </references>
</metadata>
<files>
    <file src="A.dll" target="lib\net40-client" />
    <file src="B.dll" target="lib\net40-client" />
</files>

这可确保在构建项目时将 B.dll 与 A.dll 一起复制,而无需添加 B.dll 作为引用。

现在假设 B.dll 依赖于 C.dll,我该如何构造 A.dll 和 B.dll 的 nuspec 文件来表达这种依赖关系,以便 B.dll 和 C.dll 都将与 A 一起复制。 dll 而不添加 B.dll 或 C.dll 作为引用或在 A.dll 的 nuspec 文件中显式添加 C.dll。

【问题讨论】:

    标签: nuget nuget-package


    【解决方案1】:

    如果 B.dll 需要 C.dll,那么它应该包含在您的 &lt;files&gt; 列表中。我不知道你怎么能解决这个问题。

    <files>
     <file src="A.dll" target="lib\net40-client" />
     <file src="B.dll" target="lib\net40-client" />
     <file src="C.dll" target="lib\net40-client" />
    </files>
    

    根据Nuspec documentationreferenceslib 下作为项目引用添加的程序集的名称。如果未指定,则将 lib 中的所有引用添加为项目引用。指定引用时,只指定名称,不指定包内路径。

    因此,通过将A.dll 指定为唯一的reference,NuGet 知道不添加对C.dll 的项目引用。

    【讨论】:

      猜你喜欢
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      相关资源
      最近更新 更多