2015-01-16 6 views
0

Я создал пакет для фреймворка, который зависит от множества проектов в рамках одного решения. Я хочу создать пакеты nuget для фреймворка и различные проекты в рамках решения.Недостающие пакеты пакета Nuget

В Framework.Framework.nuspec я следующие зависимости заявил:

<dependencies> 
     <group> 
      <dependency id="Framework.CompositionRoot" version="1.0" /> 
      <dependency id="Framework.Services" version="1.0" /> 
      <dependency id="Framework.Domain" version="1.0" />        
     </group> 
    </dependencies> 

И в каждом файле проекта имеет свой собственный nuspec файл, например Framework.CompositionRoot.nuspec, которая имеет следующие зависимости:

<dependencies> 
     <group> 
      <dependency id="Super.Services" version="1.0" /> 
      <dependency id="Super.Data" version="1.0" /> 
      <dependency id="Super.Domain" version="1.0" />        
     </group> 
    </dependencies> 

Моя проблема заключается в том, что при установке Framework.Framework в другом проекте, кажется, установить некоторые из зависимых пакетов NuGet, но не другие. В этом случае он устанавливает Framework.CompositionRoot и Framework.Services, но не Framework.Domain.

Framework.Domain имеет свой собственный файл nuspec в решении, а сгенерированный файл Framework.Framework.nupkg показывает Framework.Domain как зависимость. Я только установил Framework.Framework в проекте, а не Framework.Domain, поскольку, насколько мне известно, это должно быть установлено при установке Framework.Framework.

Когда я смотрю в ссылках на решение, он добавил файл Framework.Domain.dll, но половина интерфейсов, объявленных в этом домене, отсутствует. (Я удостоверился, что недостающие интерфейсы объявлены как общедоступные.) Однако, если я копирую/вставляю dll в папку lib и ссылаюсь на нее вручную, все интерфейсы есть.

Любая помощь будет оценена по достоинству.

ответ

0

Это связано с тем, что по умолчанию устаревшие версии устарели. Хотя Framework.Domain не был в списке установленных пакетов при просмотре через диспетчер пакетов, он был виден в packages.config и имел старую версию, которая не содержала интерфейсов. (. NuGet установки установит самую низкую версию зависимостей по умолчанию)

Для того, чтобы исправить это, я удалил пакет и повторно установил его с помощью флага:

-DependencyVersion «HighestPatch».

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