> .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中修复的