加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:41:12 所属栏目:百科 来源:网络整理
导读:对于也可以通过NuGet使用的 github托管的开源C#项目,应该如何组织源代码?特别: .nuspec文件应该在github仓库中? .nuspec文件应该与.csproj文件在同一个文件夹中? NuGet包树怎么样(/ lib,/ content stuff),因为是生成的,应该是在git吗? 我的想法是,NuGet
对于也可以通过NuGet使用的 github托管的开源C#项目,应该如何组织源代码?特别:

> .nuspec文件应该在github仓库中?
> .nuspec文件应该与.csproj文件在同一个文件夹中?
> NuGet包树怎么样(/ lib,/ content stuff),因为是生成的,应该是在git吗?

我的想法是,NuGet部分与github主机是分开的,就像在项目源中一样,但是.nuspec不是,因为NuGet的发布不是一个开放源代码的操作.没有人希望每一个叉子都可以建立和发布一个新的NuGet软件包,这样开源的Foo软件??包就可以在“Rick’s Foo”与“John’s Foo”和“Alice’s Foo”

但另一方面,我希望github源代码库作为项目的一站式存储库,如果我打开我的其他笔记本电脑并从那里登记,我应该能够构建/打包/推送w / o重新创建整个NuGet基础架构从零开始(即只输入我的API密钥,没有更多).

这两个要求是相互矛盾的,我想念一些明显的东西吗?

解决方法

我会做以下事情:

>提交.csproj文件旁边的.nuspec文件
>添加一个nuget.config文件,其中moves the packages folder为一级.
>在解决方案中启用package restore,不要提交NuGet软件包存储库的内容
>创建一个msbuild文件(或任何你喜欢的构建车辆),它具有:

>构建源代码并创建nuget包的“构建”目标
>一个“发布”目标,将NuGet软件包推送到nuget.org,并将您的API密钥作为参数.

我亲自维护.nuspec文件中的nuget包的版本号,并在我执行“release”时手动更新它.这样我可以标记我推到NuGet Feed的确切版本.

使用此设置,Visual Studio中的构建不会生成NuGet包,但存储库中都可以使用所有工具.

文件夹结构如下所示:

.Docs ==> not in source repo
   .Packages ==> not under source control
   .Src ==> git repo here
   .SrcMySolution.sln
   .Src.gitignore
   .SrcMuRules.ruleset
   .Srcbuild.proj ==> msbuild file to build everything.
   .SrcMyProjectMyProject.csproj
   .SrcMyProjectMyProject.nuspec
   .SrcMyProjectnuget.config
   .Build ==> not under source control
   .BuildDebug
   .BuildRelease
   .BuildPublish

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读