Nuget:解决方案中项目之间的依赖关系

Nuget: dependencies between projects in a solution

我不知道如何创建引用解决方案项目和第三方程序集的包

我有一个包含 2 个项目的解决方案,ABB 引用 A。此外,B 引用 C 这是一个位于 Solution/libs

中的 dll

AB 应该是 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 的信息。然而...

它给了我一个 nupkg,A.dllB.dll\lib\net45 中,C.dll\lib 中。还有一个 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>

并且当我将包安装到项目中时,ABC 的 none 被引用。

我的设置有什么问题?有没有办法创建一个包,其中包含从 csproj 获取的依赖项和手动指定的引用(或者可能有一些隐藏的约定?)

有一个名为 NuProj 的开源 Visual Studio 插件可以更好地处理这些场景。它由 Microsoft 员工 Immo Landwerth 发起。它定义了一个自定义的 NuProj 项目类型,您可以将其添加到您的解决方案中,并且可以很好地处理引用。

您可以在 project website 上找到更多信息。