2013-12-19 77 views
4

我試圖讓我們的TFS構建過程從我們的解決方案項目中生成NuGet包。我們的目標是創建一個私有包源,因此所有其他內部產品都可以使用NuGet下載/更新框架。用於TFS持續集成的NuGet包

到目前爲止,我們已經完成了構建過程(很長一段時間)並對我們的庫進行了版本控制,剩下的僅僅是「nuget pack」所有項目。


我至今tryed:

  1. 的NuGet規範* .csproj的,然後收拾的NuGet * .nuspec;
  2. nuget spec * .dll,然後nuget pack * .nuspec;
  3. nuget pack * .csproj直接(no .nuspec文件);

所有這些似乎工作,但他們都似乎失敗的步驟,我實際上需要他們取得成功。

我實際上是從做提到的步驟獲得:

  1. 沒有dependency¹上市,沒有reference²上市;

  2. 沒有dependency¹上市,上市沒有reference²,從目錄中的所有DLL被打包在同一.nupkg(whitout使用-IncludeReferencedProjects);

  3. (最好到目前爲止)一些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?

回答

3

原來是一個簡單的路徑問題。引用和依賴關係沒有被正確添加,因爲我正在執行來自其他工作目錄的命令。

最重要的是,使用-IncludeReferencedProjects是正確添加所需的所有內容所必需的。

之後,使用Powershell的構建過程成功完成,一切按預期工作=)