2016-04-15 1 views
5

Я бы хотел пропустить итерацию в пакете nuget без постоянного нажатия этого пакета на канал nuget.Переопределить ссылку пакета nuget с ссылкой на локальный проект

Мне интересно, можно ли условно добавить ссылку на проект вместо ссылки на пакет nuget через файл цели или реквизита в файлах csproj, который позволит мне локально отлаживать мой пакет nuget.

В моем csproj я бы:

<Reference Include="A"> 
    if(Exists(localOverrides.props) { 
     <HintPath>localOverrides.A.HintPath</HintPath> 
    } else { 
     <HintPath>..\packages\A.dll</HintPath> 
    } 
</Reference> 

и localOverrides.props бы файл в список в моем .gitignore, что разработчики могли бы добавить строки нравятся:

A -> C:\Repos\A\bin\A.dll 

Я на неправильный путь? Разумеется, должен быть более устойчивый способ быстро итеративно отлаживать пакет nuget, а затем создавать пакеты перед выпуском при каждом изменении.

ответ

2

Способ, которым я всегда отлаживал пакет Nuget, после того, как вы добавили этот пакет в свое решение через Nuget , вы затем вносите изменения в DLL Nuget и копируете их в нужную папку в папке пакетов для проекта, использующего пакет Nuget.

Все, что вам нужно сделать, это скомпилировать решение, которое решение проекта Nuget в режиме отладки, и просто скопировать/вставить их в папку пакетов потребляющего проекта. Вы можете сделать это еще проще, написав пакетный скрипт и добавив его в качестве события пост-сборки в проект Nuget, который просто скопировал библиотеки DLL в нужную папку для вас.

0

Если все, что вы хотите сделать, это отладить пакет NuGet, я предлагаю вам использовать опцию «dotpeek debug server». Таким образом вам не нужно ничего делать со ссылкой и просто отлаживать пакет или что угодно. https://confluence.jetbrains.com/plugins/servlet/mobile#content/view/53336814

+1

Спасибо за ваше предложение, к сожалению, это не позволяет мне изменить код и запустить его снова. – Valchris

0

Похоже, что вы хотите создать тестовый проект (блок или интеграцию) в том же решении, что и ваш проект сборки NuGet. Тогда вы можете доказать свою правоту независимо от любых потребителей пакета NuGet. Хорошие тесты также помогут гарантировать, что вы не сломаете ничего непреднамеренно при обновлении пакета в будущем.