【问题标题】:Directory structure for a NuGet published github hosted projectNuGet 发布的 github 托管项目的目录结构
【发布时间】:2012-10-27 16:23:55
【问题描述】:

对于一个 github 托管的开源 C# 项目,也可以通过 NuGet 获得,应该如何组织源代码?具体来说:

  • .nuspec 文件是否应该在 github 存储库中?
  • .nuspec 文件是否应与 .csproj 文件位于同一文件夹中?
  • NuGet 包树(/lib、/content 的东西)怎么样,既然生成了,它应该在 git 中吗?

我的想法是 NuGet 部分与 github 托管是分开的,因为项目源代码可用但 .nuspec 不可用,因为 NuGet 中的发布本身不是开源操作。没有人希望每个分支都构建和发布 NuGet 包,因此开源 Foo 包最终在图库中显示为“Rick's Foo”与“John's Foo”与“Alice's Foo”等等。

但另一方面,我确实希望 github 源代码库充当项目的一站式存储库,如果我打开另一台笔记本电脑并从那里注册,我应该能够构建/打包/推送 w/ o 从头开始​​重新创建整个 NuGet 基础架构(即只输入我的 API 密钥,仅此而已)。

这两个要求是相互矛盾的,我是不是漏掉了一些明显的东西?

【问题讨论】:

    标签: c# github open-source nuget


    【解决方案1】:

    我会做以下事情:

    • 提交.nuspec 文件旁边的.csproj 文件
    • 添加一个nuget.config 文件,其中moves the packages folder 升级。
    • 在解决方案中启用 package restore提交 NuGet 包存储库的内容
    • 创建一个 msbuild 文件(或您喜欢的任何构建工具),其中包含:
      • 构建源代码并创建 nuget 包的“构建”目标
      • 一个“发布”目标,它将 NuGet 包推送到 nuget.org 并将您的 API 密钥作为参数。

    我个人在.nuspec 文件中维护nuget 包的版本号,并在我“发布”时手动更新它。这样我可以标记我推送到 NuGet 提要的确切版本。

    通过此设置,Visual Studio 中的构建不会生成 NuGet 包,但存储库中提供了所有工具来执行此操作。

    文件夹结构如下所示:

       .\Docs\ ==> not in source repo
       .\Packages\ ==> not under source control
       .\Src\ ==> git repo here
       .\Src\MySolution.sln
       .\Src\.gitignore
       .\Src\MuRules.ruleset
       .\Src\build.proj ==> msbuild file to build everything.
       .\Src\MyProject\MyProject.csproj
       .\Src\MyProject\MyProject.nuspec
       .\Src\MyProject\nuget.config
       .\Build\ ==> not under source control
       .\Build\Debug\
       .\Build\Release\
       .\Build\Publish\
    

    请注意包还原功能中的此错误,它将忽略您配置的包位置。 http://nuget.codeplex.com/workitem/1990 ==> 这在 Nuget 2.7 中已修复

    【讨论】:

      【解决方案2】:

      在nuget v2.8上,我只需要修改.gitignore并添加:

      packages/
      

      这将从提交中排除 nuget packages 文件夹。当您构建新的签出源代码时,将下载并恢复这些包。确保已启用包还原设置,但我认为它已在 v2.8 上默认启用。

      【讨论】:

        猜你喜欢
        • 2019-03-06
        • 2015-04-22
        • 2013-11-24
        • 1970-01-01
        • 2016-06-18
        • 1970-01-01
        • 1970-01-01
        • 2023-01-26
        • 1970-01-01
        相关资源
        最近更新 更多