【问题标题】:Two csproj DLLs, one NuGet package. How to do this?两个 csproj DLL,一个 NuGet 包。这个怎么做?
【发布时间】:2015-05-21 23:24:57
【问题描述】:

我正在 Visual Studio 中处理一个项目,该项目分为三个不同的项目:

  1. Acme.Web 应用程序
  2. Acme.Domain
  3. Acme.SDK

WebApplication 使用 Domain 项目,其中存储了它的实体类以及一些其他“核心”对象和接口。

SDK 项目是我们提供给第 3 方用户的东西。它对我们的WebApplication 项目进行API 调用。 SDK 项目也使用了Acme.Domain 项目。

现在问题来了。

我们为Acme.SDK 创建了一个 NuGet 包。但是因为Acme.SDK也用到了Acme.Domain项目,所以我们也需要把它打包成NuGet包。

我想要的只是一个 NuGet 包,并且仍然能够从那个 NuGet 包而不是两个松散的 NuGet 包中引用 Acme.SDKAcme.Domain 中的两个类。

这可能吗?那么,我该怎么做呢?

【问题讨论】:

    标签: nuget nuget-package nuspec


    【解决方案1】:

    是的。如您所知,NuGet 可以直接从 .csproj 文件创建包。这基本上是“自动”模式。这很简单,但也有局限性。

    您还可以创建一个 .nuspec 文件,该文件允许您明确说明您希望如何构建包。这可以包括多个程序集、依赖项、针对不同的框架等。

    首先在解决方案的根目录中创建一个名为 nuspec 的文件夹。

    nuspec 文件夹中打开命令行。

    类型:nuget spec MyPackage

    这将创建一个 MyPackage.nuspec 文件。编辑此文件。你会在那里看到一堆样板代码。适当地更新值。

    注意:一旦开始使用显式 .nuspec 文件,您将必须维护这些值(如版本号),因为它们将不再从 .csproj 文件中提取。

    您需要添加的主要部分是<files/> 部分。还要确保包含两个项目所需的依赖项。

    这是一个示例 .nuspec 文件:

    <?xml version="1.0"?>
    <package >
      <metadata>
        <id>MyPackage</id>
        <version>1.0.0</version>
        <authors>Author Names</authors>
        <owners>Owner Names</owners>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>MyPackage description</description>
        <releaseNotes>Initial version.</releaseNotes>
        <copyright>Copyright 2015</copyright>
    
    <!-- add dependencies here  
        <dependencies>
            <dependency id="SomePackage.Id" />
        </dependencies>
    -->
    
      </metadata>
      <files>
        <file src="..\ProjectA\bin\Debug\ProjectA.dll" target="lib\net45" />
        <file src="..\ProjectB\bin\Debug\ProjectB.dll" target="lib\net45" />
      </files>
    </package>
    

    注意文件部分如何引用您想要包含在包中的实际程序集。

    编辑 .nuspec 文件后,您需要创建包。

    从命令行输入:nuget pack MyPackage.nuspec

    然后它应该创建一个 MyPackage.1.0.0.nupkg 文件以准备上传到 NuGet.org。

    这里是 Nuspec 格式的文档:http://docs.nuget.org/Create/Nuspec-Reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 2013-04-01
      相关资源
      最近更新 更多