我試圖讓我們的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?