在NuGet包中定义.dll之间的依赖关系

时间:2012-12-15 14:15:25

标签: nuget nuget-package

我已经定义了类似于以下内容的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。

1 个答案:

答案 0 :(得分:1)

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

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

根据references的<{3}}:在lib下添加为项目引用的程序集的名称。如果未指定,则lib中的所有引用都将添加为项目引用。指定引用时,只指定名称而不是包内的路径。

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