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

前端之家收集整理的这篇文章主要介绍了c# – NuGet发布的github托管项目的目录结构前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对于也可以通过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
   .\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#相关文章