0

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

4

1 回答 1

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>

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

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

于 2012-12-19T20:20:02.383 回答