我已经定义了类似于以下内容的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。
答案 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
添加项目引用。