2014-08-29 89 views
1

我想編譯我的程序集後創建nuget包(並將它們部署到我的私人nuget存儲庫)。從TFS構建過程創建和發佈nuget包?

我試着用NuGetter來設置所有的東西,但是那個項目是不活躍的,只允許你在需要一個包/程序集的時候創建一個包/項目。

現在我有點卡住了。我目前正在看他們的來源,希望能讓它更適合我。

我在這裏問的同時是:有沒有人有完整的解決方案,用於從TFS 2012和/或TFS2010發佈/創建nuget包以實現多包解決方案?

+0

中添加了完整說明您是否已檢查ALM Rangers的「TFS版本控制指南 - 使用NuGet進行依賴管理」? – 2014-08-29 14:40:34

回答

3
I tried setting everything up by using NuGetter, but that project is kind of inactive and only allows you to build one package/project while I need one package/assembly. 

NuGetter支持多個包,我現在只使用多包方法,因爲您可以將它用於單個或多個包。

使用封裝的XML文件,您可以指定多個包

<?xml version="1.0"?> 
<NuGetterPackages> 
    <NuGetterPackage name="Package1"> 
    <NuSpecFilePath>Package1.nuspec</NuSpecFilePath> 
    <BasePath>NuGetPrePackage_Package1</BasePath> 
    <InvokePowerShell>True</InvokePowerShell> 
    <PowerShellScriptPath>PrePackage_Package1.ps1</PowerShellScriptPath> 
    <InvokePush>True</InvokePush> 
    <OutputDirectory>NuGetPackage</OutputDirectory> 
    <PushDestination>\\MYFeedLoc\NugetFeed</PushDestination> 
    <Version>1.0.J.B</Version> 
    </NuGetterPackage> 
<NuGetterPackage name="Package2"> 
    <NuSpecFilePath>Package2.nuspec</NuSpecFilePath> 
    <BasePath>NuGetPrePackage_Package2</BasePath> 
    <InvokePowerShell>True</InvokePowerShell> 
    <PowerShellScriptPath>PrePackage_Package2.ps1</PowerShellScriptPath> 
    <InvokePush>True</InvokePush> 
    <OutputDirectory>NuGetPackage</OutputDirectory> 
    <PushDestination>\\MYFeedLoc\NugetFeed</PushDestination> 
    <Version>1.0.J.B</Version> 
    </NuGetterPackage> 
</NuGetterPackages> 

源控制下我有packages.xml文件將,然後每NuGet包PowerShell的文件和文件nuspec。

Nuspec文件看起來像這樣

<?xml version="1.0"?> 
<package > 
    <metadata> 
    <id>Package1</id> 
    <version>$version$</version> 
    <title>Package1</title> 
    <authors>Package1 Author</authors> 
    <owners>Package1 Owner</owners> 
    <iconUrl>http://Iconserver/nextlogo.png</iconUrl> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>Description of Contents</description> 
    <releaseNotes>First release of the package.</releaseNotes> 
    <copyright>Copyright 2014</copyright> 
    <tags>Space Seperated Tags</tags> 
    <dependencies> 
     <dependency id="AnyLatestDependencyIMayHAve" version=""/> 
     <dependency id="AFixedDependencyIMayHAve" version="[1.0.0]"/> 
    </dependencies> 
    </metadata> 
</package> 

然後一個PowerShell文件,只是會在Packages.xml的BasePathDeclaration內的文件夾結構,這是同一個文件上NuGetter現場如圖

我已經在我的blog

+0

這就是應該看起來的樣子。謝謝 :)。但爲什麼你爲每個項目指定一個nuspec文件?這是如何運作的?據我所知,這些文件是在構建包之前創建的?! – 2014-08-29 14:13:00

+0

擴大了答案。一切都在手前創建。構建運行。創建'BasePath'文件夾,powershell腳本將在那裏創建所需的結構,然後將包dll複製到該結構中。然後,NuGet針對該結構運行以創建該包 – 2014-08-29 14:40:41