C# NuGet发布的github托管项目的目录结构
对于github托管的开源C#项目,也可以通过NuGet获得,应该如何组织源代码?具体而言:C# NuGet发布的github托管项目的目录结构,c#,github,open-source,nuget,C#,Github,Open Source,Nuget,对于github托管的开源C#项目,也可以通过NuGet获得,应该如何组织源代码?具体而言: .nuspec文件应该在github存储库中吗 .nuspec文件是否应与.csproj文件位于同一文件夹中 NuGet包树(即/lib、/content-stuff)是如何生成的,它应该是git吗 我的想法是,NuGet部分与github宿主是分开的,因为在项目源代码中是可用的,但是.nuspec不是,因为在NuGet中发布本身不是一个开源操作。没有人希望每一个fork都能构建和发布一个新的NuG
- .nuspec文件应该在github存储库中吗
- .nuspec文件是否应与.csproj文件位于同一文件夹中
- NuGet包树(即/lib、/content-stuff)是如何生成的,它应该是git吗
这两个要求相互矛盾,我是否错过了一些明显的东西?我会做以下几点:
- 提交
文件旁边的.csproj
文件.nuspec
- 添加一个
文件,该文件将升级nuget.config
- 在解决方案中启用,不提交NuGet包存储库的内容
- 创建具有以下内容的msbuild文件(或任何您喜欢的生成工具):
- 一个“构建”目标,它构建源代码并创建nuget包
- 一个“发布”目标,它将NuGet包推送到NuGet.org,并将您的API密钥作为参数李>
.nuspec
文件中维护nuget包的版本号,并在执行“发布”时手动更新。通过这种方式,我可以标记我推送到NuGet提要的确切版本
使用此设置,VisualStudio中的内部版本不会生成NuGet包,但存储库中提供了用于生成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\
请注意程序包还原功能中的此错误,它将忽略您配置的程序包位置。==>这在Nuget v2.8上的Nuget 2.7中是固定的,我只需要修改
.gitignore
并添加:
packages/
这将从提交中排除nugetpackages
文件夹。当您构建新的签出源代码时,将下载并还原这些包。确保已启用包还原设置,但我认为它在v2.8上默认已启用