我试图让我们的TFS构建过程从我们的解决方案项目中生成NuGet包。我们的目标是创建一个私有包源,因此所有其他内部产品都可以使用NuGet下载/更新框架。用于TFS持续集成的NuGet包
到目前为止,我们已经完成了构建过程(很长一段时间)并对我们的库进行了版本控制,剩下的仅仅是“nuget pack”所有项目。
我至今tryed:
- 的NuGet规范* .csproj的,然后收拾的NuGet * .nuspec;
- nuget spec * .dll,然后nuget pack * .nuspec;
- nuget pack * .csproj直接(no .nuspec文件);
所有这些似乎工作,但他们都似乎失败的步骤,我实际上需要他们取得成功。
我实际上是从做提到的步骤获得:
没有dependency¹上市,没有reference²上市;
没有dependency¹上市,上市没有reference²,从目录中的所有DLL被打包在同一.nupkg(whitout使用-IncludeReferencedProjects);
(最好到目前为止)一些dependencies¹上市,没有reference²上市,只有实际的项目DLL是在.nupkg lib文件夹内。
¹:通过依赖我的意思的NuGet依赖关系,从的NuGet包
²:通过参考我的意思是解决方案项目引用。
示例场景:
Solution1.sln
- 项目A
- 项目B
项目A具有项目参考到项目B。我希望上产生的.nuspec发生:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>ProjectA <- OK</id>
<version>1.2.0.0 < - OK</version>
<title>ProjectA <- OK</title>
<authors>My Company <- OK</authors>
<owners>My Company <- OK</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Description</description>
<copyright>OK</copyright>
<dependencies>
<dependecy id="ProjectB" Version="1.2.0.0" /> <<<<<<---- NOT HAPPENING!
</dependencies>
</metadata>
</package>
一些的NuGet依赖列,但不是所有的人(即使他们是从refeered项目packages.config内)的。例如:我有一个依赖其他4个NuGet包的项目,只有2个被列为生成的.nuspec文件的依赖项。
重要信息:
- 每个项目都有自己的packages.config,建立的NuGet的方式;
- 解决方案文件夹包含packages文件夹和所有引用的包;
- 已经试用过Nugetter(XAML破解VS 2012.3和TFS 2012,无法打开它)
- 已经尝试过this,也不包括正确的依赖和引用;
- 解决方案包恢复已打开ON(我们需要这样做以避免将包存储在TFS上)。
我需要什么:
- 自动化的包装过程,以每包包含的csproj上.nuspec文件的所有引用和依赖,让所有的人都将被正确加载安装时它。
类似的问题,我已经研究过:
NuGet: pack command is NOT including nuget dependencies
Nuget pack only including dependencies for some projects
Why doesn't nuget include the referenced project when packing?