2014-10-19 5 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 не знаю, что вы хотите, чтобы ссылаться на них.

Вы должны изменить свои файлы так, чтобы они положили DLLs вы хотите ссылаться в папку lib в пакете NuGet, например:

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

или из самого FAKE:

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

(но если вы хотите сделать это из FAKE, вам придется заменить раздел конфигурации files в вашем файле nuspec с помощью @@[email protected]@.

+0

Прекрасно работает - благодаря :). –

Смежные вопросы