2014-10-19 65 views
2

我一直在嘗試配置我的本地NuGet源代碼,以便在那裏放置我自己的包。所以我創建了一個文件夾並在Visual Studio中設置路徑 - 這很好。本地NuGet源代碼+用FAKE創建包

目前我遇到了用FAKE創建包的問題。 nupkg文件被成功創建,但是當我嘗試從另一個項目中添加對它的引用時,什麼都沒有發生(即VS說包已成功添加,但我在「參考」下看不到它)。

我的示例項目具有以下結構:

-- root 
    -- MyProject (project type: F# library) 
    -- MyProject.Test (Xunit) 
    build.bat 
    build.fsx 
    MyProject.nuspec 
    MyProject.sln 

而且我想我的NuGet包包含在MyProject的定義函數(它沒有任何額外的dependenties,除了「傳統」的人作爲FSharp.Core)。 .nuspec文件的內容如下:

<?xml version="1.0" encoding="utf-8"?> 
<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <id>@[email protected]</id> 
    <version>@[email protected]</version> 
    <authors>@[email protected]</authors> 
    <owners>@[email protected]</owners> 
    <summary>@[email protected]</summary> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>@[email protected]</description> 
    <releaseNotes>@[email protected]</releaseNotes> 
    @[email protected] 
    @[email protected] 
    </metadata> 
    <files> 
    <file src="**\*.*" exclude="**\*.pdb;**\*.xml" /> 
    </files> 
</package> 

的build.fsx文件是很長,所以我會貼上它唯一的一塊,那就是負責如果有更多的內容是創建包(喊需要):

let buildDir = @".\build\" 
let testDir = @".\test\" 
let deployDir = @".\deploy\" 
let nugetDir = @".\nuget\" 

Target "CreateNuget" (fun _ -> 
    XCopy buildDir nugetDir 

    "MyProject.nuspec" 
     |> NuGet (fun p -> 
      {p with    
       Authors = authors 
       Project = projectName 
       Description = projectDescription 
       Version = version 
       NoPackageAnalysis = true 
       OutputPath = nugetDir 
       }) 
) 

Target "Publish" (fun _ ->  
    !! (nugetDir + "*.nupkg") 
     |> Copy deployDir 

回答

1

由於您的文件未放入nuget包中的正確目標文件夾,因此nuget不知道要引用它們。

你需要改變你的文件,使他們把要引用到lib文件夾中NuGet包例如dll文件:

<files> 
    <file src="directory\MyProject.dll" target="lib" /> 
</files> 

或FAKE本身:

Nuget(
    { p with 
      Files = [@"directory\MyProject.dll", Some @"lib", None] }) 

(但是如果你想從FAKE來完成,你必須用你的nuspec文件中的files config部分替換爲@@[email protected]@

+0

Works fine - 謝謝 :)。 – 2014-10-21 18:57:18