【发布时间】:2016-03-04 14:04:14
【问题描述】:
我不知道如何创建一个引用解决方案项目和第三方程序集的包
我有一个包含 2 个项目的解决方案,A 和 B。 B 引用 A。另外,B 引用了C,这是一个位于Solution/libs 中的dll
A 和 B 应该是 nuget 包。
我有一个B.nuspec 文件,内容如下:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/10/nuspec.xsd">
<metadata>
<id>B</id>
<version>$version$</version>
<title>B</title>
<authors>me</authors>
<owners>me</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Description</description>
<copyright>Copyright © me 2016</copyright>
<references>
<reference file="C.dll" />
</references>
</metadata>
<files>
<file src="..\libs\RMS\C.dll" target="lib"/>
</files>
</package>
我运行了以下命令:
nuget pack B.csproj -IncludeReferencedProject
正如 nuget 文档中所说,nuget 将结合来自 csproj 和 nuspec 的信息。不过……
它给了我一个带有A.dll 和B.dll 在\lib\net45 和C.dll 在\lib 中的nupkg。还有一个nuspec文件
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/10/nuspec.xsd">
<metadata>
<id>B</id>
<version>1.0.31</version>
<title>B</title>
<authors>me</authors>
<owners>me</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Description</description>
<copyright>Copyright © me 2016</copyright>
<dependencies>
<dependency id="log4net" version="2.0.2" />
<dependency id="JetBrains.Annotations" version="9.2.0" />
<dependency id="morelinq" version="1.4.0" />
</dependencies>
<references>
<reference file="C.dll" />
</references>
</metadata>
</package>
当我将包安装到项目中时,A、B、C 都没有被引用。
我的设置有什么问题?有没有办法使用从 csproj 获取的依赖项和手动指定的引用创建一个包(或者可能有一些隐藏的约定?)
【问题讨论】:
-
嘿,你找到解决办法了吗?我在这里面临一些非常相似的事情 - stackoverflow.com/questions/36796591/…
-
@pharophy 是的,我刚刚在 nuspec 中将 C.dll 添加到 lib\net40 中。关键是您需要将文件放在 lib 的一个子文件夹中... net45 或 net40
标签: nuget nuget-package nuget-spec