gpt4 book ai didi

c# - NuGet 发布的 github 托管项目的目录结构

转载 作者:可可西里 更新时间:2023-11-01 09:11:04 28 4
gpt4 key购买 nike

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

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

我的想法是 NuGet 部分与 github 托管是分开的,因为在项目源中可用但 .nuspec 不可用,因为 NuGet 中的发布本身不是开源操作。 None 不希望每个分支都构建和发布一个 NuGet 程序包,这样开源 Foo 程序包最终在画廊中作为“Rick's Foo”与“John's Foo”与“Alice's Foo”等等

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

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

最佳答案

我会做以下事情:

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

我个人在 .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 中修复

关于c# - NuGet 发布的 github 托管项目的目录结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272672/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com