Налаштування загальної папки наборів пакунків для всіх рішень, коли деякі проекти включаються до кількох рішень


137

Я використовую NuGet для отримання пакетів із зовнішніх та внутрішніх джерел пакетів, що дуже зручно. Але я зрозумів, що пакети за замовчуванням зберігаються за рішенням, що дуже неприємно, коли деякі проекти з посиланнями NuGet включаються в кілька рішень. Тоді посилання змінюються на іншу папку пакетів рішень, яка може бути фактично недоступною для іншого розробника або збірної машини.

Я бачив, що є способи вказати загальне розташування пакету (можливо, на кореневому рівні проекту, ми використовуємо керування джерелами TFS) з випуском 2.1 NuGet, див. Примітки до випуску . Я використовую NuGet v2.7

Але я намагався додати файли nuget.config, не бачачи жодного ефекту від цього. Пакети все ще зберігаються в папці з рішеннями. Чи щось я пропустив? Здається, є різні структури вузла xml, які потрібно додати до файлу nuget.config, залежно від того, хто відповідає на це питання: Schwarzie пропонує іншу нитку Stackoverflow :

<settings>
  <repositoryPath>..\..\[relative or absolute path]</repositoryPath>
</settings>

Примітки до випуску NuGet 2.1 (див. Посилання вище) пропонує такий формат:

<configuration>
  <config>
    <add key="repositoryPath" value="..\..\[relative or absolute path]" />
  </config>
</configuration>

Я не знаю, хто з них, чи будь-який, або обидва будуть працювати в підсумку. Я спробував обидва на рівні рішення. Чи може файл nuget.config розміщуватись на кореневому рівні проекту TFS, або він повинен бути у каталозі рішення? Здається, що NuGet читає та застосовує налаштування з цих файлів у певному порядку, чому було б доцільно додавати їх у декілька рівнів, де файл nuget.config на рівні рішення заміняв би один на кореневому рівні проекту TFS. Чи можна це уточнити?

Чи потрібно видалити всі встановлені пакети, перш ніж ці посилання спрацюють? Мені б хотілося, щоб хтось міг надати покрокову інструкцію щодо переходу від використання конкретних рішень до загальної папки пакунків, де проекти, що належать до декількох рішень, можуть знайти потрібні пакети нугів.


3
Я підозрюю, що коротка відповідь на ваше запитання (прихована у відповіді Верміса нижче) полягає в тому, що ви пропустили промову $перед відносним шляхом. Також відповідь на ваше запитання про файли NuGet.Config є тут . Спочатку він виглядає у .nuget, потім у всіх батьківських каталогах, потім у «глобальному» файлі у вашій AppData: потім застосовує їх у порядку REVERSE (все, що це означає).
Benjol

Це здається важким. Є інструмент під назвою Paket, який міг би вирішити цю проблему: fsprojects.github.io/Paket
Tuomas Hietanen

Пізній коментар. Просто хотілося додати, що Visual Studio потрібно перезапустити, якщо він працює під час запуску цієї зміни, оскільки файли nuget.config, здається, читаються під час запуску VS. Крім того, у мене не було проблем без $, просто не почніть з зворотної косої риски.
MBWise

Відповіді:


147

У мене схожа ситуація із зовнішніми та внутрішніми джерелами пакетних пакетів з проектами, на які посилається більше ніж одне рішення. Сьогодні я працював з однією з наших баз коду і, здається, працює з робочими станціями розробника та нашим сервером збірки. Наведений нижче процес має на увазі цей сценарій (хоча це не повинно бути важко адаптуватися, щоб мати загальну папку пакунків в іншому місці).

  • Кодова база
    • Проект А
    • Проект B
    • Проект С
    • Рішення
      • Рішення 1
      • Рішення 2
      • Рішення 3
      • Пакети (це загальне для всіх рішень)

Оновлений відповідь станом на NuGet 3.5.0.1484 з Visual Studio 2015 Update 3

Зараз цей процес трохи простіший, ніж коли я спочатку вирішував це і думав, що настав час його оновити. Загалом, процес той самий лише з меншими кроками. Результатом є процес, який вирішує або забезпечує наступне:

  • Все, що потрібно зарахувати до управління вихідним кодом, видно і відстежується в рішенні
  • Встановлення нових пакетів або оновлення пакетів за допомогою диспетчера пакетів у Visual Studio буде використовувати правильний шлях до репозиторію
  • Після початкової конфігурації не відбувається злому файлів .csproj
  • Жодних модифікацій робочої станції розробника (код готовий до виїзду)

Слід пам’ятати про деякі потенційні недоліки (я ще не відчував їх, YMMV). Дивіться відповідь та коментарі Бенола нижче.

Додати NuGet.Config

Вам потрібно створити файл NuGet.Config у корені папки \ Рішення \. Переконайтеся, що це створений вами UTF-8 файл, якщо ви не впевнені, як це зробити, скористайтеся меню Файл-> Нове-> Файл Visual Studio і виберіть шаблон файлу XML. Додайте до NuGet.Config наступне:

<?xml version="1.0" encoding="utf-8"?>
<configuration>  
  <config>
    <add key="repositoryPath" value="$\..\Packages" />
  </config>
</configuration>

Для налаштування Path repositoryPath ви можете вказати абсолютний шлях або відносний шлях (рекомендований), використовуючи маркер $. $ Токен заснований на тому, де знаходиться NuGet.Config (маркер $ насправді відносно одного рівня нижче місця розташування NuGet.Config). Отже, якщо у мене є \ Solutions \ NuGet.Config, і я хочу \ Solutions \ Packages, мені потрібно вказати $ \ .. \ Packages як значення.

Далі ви хочете додати до вас папку рішення, яка називається на зразок "NuGet" (клацніть правою кнопкою миші на своєму рішенні, Add-> New Solution Folder). Папки рішення - це віртуальні папки, які існують лише в рішенні Visual Studio і не створюють фактичну папку на диску (і ви можете посилатися на файли з будь-якого місця). Клацніть правою кнопкою миші на папці рішення «NuGet», а потім Додати-> існуючий елемент та виберіть \ Рішення \ NuGet.Config.

Причина, з якої ми це робимо, полягає в тому, щоб це було видно у рішенні та повинно допомогти переконатися, що воно належним чином контролюється вашим вихідним кодом. Ви можете зробити цей крок для кожного рішення вашої кодової бази, яка бере участь у спільних проектах.

Розміщуючи файл NuGet.Config у \ Solutions \ над будь-якими файлами .sln, ми використовуємо той факт, що NuGet рекурсивно перемістить структуру папки вгору від "поточної робочої директорії", шукаючи файл NuGet.Config, який слід використовувати. "Поточний робочий каталог" означає кілька різних речей тут, один - це шлях виконання NuGet.exe, а другий - розташування файлу .sln.

Перемикання папки ваших пакетів

По-перше, настійно рекомендую пройти кожну папку рішення та видалити будь-які \ Пакети \ папки, які існують (спочатку потрібно закрити Visual Studio). Це полегшує зрозуміти, куди NuGet розміщує вашу нещодавно налаштовану папку \ Packages \, і гарантує, що будь-які посилання на неправильну \ Packages \ папку не зможуть і потім можуть бути виправлені.

Відкрийте своє рішення у Visual Studio і розпочніть Rebuild All. Ігноруйте всі отримані вами помилки побудови, це очікується в цей момент. Це повинно розпочати функцію відновлення пакету NuGet на початку процесу збирання. Переконайтесь, що папка \ Рішення \ Пакети \ створена у потрібному місці. Якщо цього немає, перегляньте конфігурацію.

Тепер для кожного проекту у вашому рішенні потрібно:

  1. Клацніть правою кнопкою миші на проект та виберіть Unload Project
  2. Клацніть правою кнопкою миші на проект і виберіть Редагувати свій xxx.csproj
  3. Знайдіть будь-які посилання на \ пакети \ та оновіть їх до нового місця розташування.
    • Більшість із них будуть <HintPath> посиланнями, але не всі вони. Наприклад, WebGrease та Microsoft.Bcl.Build матимуть окремі налаштування шляху, які потрібно буде оновити.
  4. Збережіть .csproj, а потім клацніть правою кнопкою миші на проект і виберіть Перезавантажити проект

Після того, як усі ваші .csproj файли будуть оновлені, розпочніть іншу Rebuild All, і у вас більше не повинно виникати помилок щодо відсутніх посилань. На даний момент ви закінчили, і тепер NuGet налаштований на використання спільної папки Packages.

Станом на NuGet 2.7.1 (2.7.40906.75) з VStudio 2012

Перш за все, що потрібно пам’ятати, це те, що nuget.config не контролює всі налаштування шляху в системі пакетів nuget. Це було особливо незрозуміло. Зокрема, проблема полягає в тому, що msbuild та Visual Studio (викликає msbuild) не використовують шлях у nuget.config, а навпаки, переосмислюють його у файлі nuget.targets.

Підготовка навколишнього середовища

По-перше, я перегляну папку вашого рішення і видалю всі \ пакети \ папки, які існують. Це допоможе забезпечити видимість встановлення всіх пакунків у правильну папку та допоможе виявити будь-які погані посилання на шляху у ваших рішеннях. Далі я б переконався, що у вас встановлено останнє розширене розширення Visual Studio. Я б також переконався, що у вас встановлено останню версію nuget.exe у кожне рішення. Відкрийте командний рядок та увійдіть у кожну папку $ (SolutionDir) \ .nuget \ та виконайте таку команду:

nuget update -self

Встановлення загального шляху папки для NuGet

Відкрийте кожен $ (SolutionDir) \ .nuget \ NuGet.Config та додайте в розділ <configuration> наступне:

<config>
    <add key="repositorypath" value="$\..\..\..\Packages" />
</config>

Примітка. Ви можете використовувати абсолютний шлях або відносний шлях. Майте на увазі, якщо ви використовуєте відносний шлях з $, що він відносно одного рівня нижче розташування NuGet.Config (повірте, це помилка).

Встановлення загального контуру папки пакунків для MSBuild та Visual Studio

Відкрийте кожен $ (SolutionDir) \ .nuget \ NuGet.targets та змініть наступний розділ (зауважте, що для не-Windows є ще один розділ під ним):

<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
    <!-- Windows specific commands -->
    <NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
    <PackagesConfig>$([System.IO.Path]::Combine($(ProjectDir), "packages.config"))</PackagesConfig>
    <PackagesDir>$([System.IO.Path]::Combine($(SolutionDir), "packages"))</PackagesDir>
</PropertyGroup>

Оновіть пакетиDir бути

<PackagesDir>$([System.IO.Path]::GetFullPath("$(SolutionDir)\..\Packages"))</PackagesDir>

Примітка: GetFullPath вирішить наш відносний шлях в абсолютний шлях.

Відновлення всіх пакунків нута в загальну папку

Відкрийте командний рядок і перейдіть до кожного $ (SolutionDir) \ .uget і виконайте таку команду:

nuget restore ..\YourSolution.sln

У цей момент у вас має бути одна \ папка \ папка у вашому загальному місці розташування, і жодна в жодній із ваших папок рішення. Якщо ні, то перевіряйте свої шляхи.

Виправлення посилань на проект

Відкрийте кожен .csproj-файл у текстовому редакторі та знайдіть посилання на \ пакети та оновіть їх до правильного шляху. Більшість із них будуть <HintPath> посиланнями, але не всі вони. Наприклад, WebGrease та Microsoft.Bcl.Build матимуть окремі налаштування шляху, які потрібно буде оновити.

Побудуйте своє рішення

Відкрийте своє рішення у Visual Studio і розпочніть збірку. Якщо він скаржиться на відсутні пакети, які потрібно відновити, не вважайте, що пакет відсутній і його потрібно відновити (помилка може ввести в оману). Це може бути поганим шляхом до одного з ваших файлів .csproj. Перш ніж відновити пакет, перевірте це.

У вас є помилка збірки щодо відсутніх пакетів?

Якщо ви вже переконалися, що шляхи у ваших .csproj файлах правильні, ви можете спробувати два варіанти. Якщо це результат оновлення коду від контролю вихідного коду, ви можете спробувати перевірити чисту копію, а потім створити її. Це працювало для одного з наших розробників, і я думаю, що у файлі .suo був артефакт чи щось подібне. Інший варіант - вручну змусити відновити пакет, використовуючи командний рядок у папці .nuget відповідного рішення:

nuget restore ..\YourSolution.sln

Дякую за довгу відповідь на мою тривалу проблему. Я спробую це рішення і повернусь до вас.
Матс Ісакссон

Було б працювати, щоб обидва .sln були в одному каталозі? Чи зможуть вони ділитися тим самим каталогом пакунків?
tofutim

7
Я думаю, що ця відповідь демонструє, наскільки жорстким є цілісне завдання. Потрібно створити таку складну, жорстку структуру, щоб забезпечити таку просту концепцію: - "розподіл однакових збірок між рішеннями" є свідченням поганої конструкції всієї справи.
Мік

1
Що також працює для виправлення HintPaths - після того, як ви оновили NuGet.config на свій смак, в консолі Package-Manager запустіть "Update-Package -reinstall". Це дозволить перевстановити всі пакети, виправляючи їхні підказки. Після цього - у вас можуть залишитися деякі реліквії (у мене були в деяких проектах срібленого світла - "старий" імпорт цілі / будівлі все ще був)
johannes.colmsee

1
@Vermis Якщо я налаштую загальну папку пакунків з нульовими пакетами для всіх своїх рішень. який вплив буде це на мою побудову Azure Devops?
Pankaj Devrani

39

Замість того, щоб встановити загальне розташування пакету для всіх проектів, також можна змінити HintPath у проекті наступним чином:

<HintPath>$(SolutionDir)\packages\EntityFramework.6.1.0\lib\net40\EntityFramework.dll</HintPath>

У більшості випадків у спільному проекті буде лише кілька пакетів, тому ви можете легко змінити його.

Я думаю, що краще рішення, коли ви розгалужуєте код, встановлюючи загальний репо, ви повинні змінити відносний шлях, у цьому рішенні цього не потрібно робити.


2
Адам правильний. Це найбільш спрощене рішення неймовірної дурної проблеми.
lapsus

1
Це геніальне рішення. простий і зрозумілий, що не потребує перебудови структури коду.
RredCat

2
AFAIK $ (SolutionDir) встановлюється лише тоді, коли збірка здійснюється через VS. Тож жодної будівлі безпосередньо через msbuild.exe, якщо ви не встановите / p: SolutionDir = path
Lars Nielsen

це можна встановити автоматично тут% APPDATA% \ Роумінг \ NuGet \ NuGet.Config
Кораєм

15
Це чудово працює, поки ви не оновите пакет і не перезапишете HintPath новим відносним шляхом. Стає досить нудним у великому рішенні з великою кількістю пакетів. Не дай Бог вам запустити Update-Package -Reinstall ...
gravidThoughts

22

Мій досвід спробував це з останньою версією NuGet (2.7) та VS2012:

  • Видаліть папку .nuget (на диску та в розчині)
  • Помістіть файл NuGet.Config у загальну батьківську папку всіх рішень
  • Видаліть усі існуючі папки пакунків
  • Пройдіть усі файли csproj та змініть HintPaths, щоб вказати на нове місце
  • Прибуток

У моєму випадку я хотів скласти всі пакунки .packages, щоб мій NuGet.Config виглядав нижче.

 <?xml version="1.0" encoding="utf-8"?>
 <configuration>
   <config>
     <add key="repositorypath" value=".packages" />
   </config>
 </configuration>

Зауважте, що може трапитися кілька «дивних» речей, але я думаю, що вони терплячі:

  • Якщо ви 'Оновіть' пакет з одного рішення, він негайно видалить старішу версію з папки ваших пакунків (він не може знати, чи є у вас інше рішення, яке там вказується). Це мене не сильно турбує, оскільки інше рішення просто відновиться, коли потрібно.
  • Якщо ви спробуєте додати пакунок із рішення клацання правою кнопкою миші, якщо пакет вже присутній в іншому рішенні, він побачить, що він є, і покаже вам "зелений галочку" замість кнопки "встановити". Зазвичай я встановлюю з проекту, що працює правою кнопкою миші, тому це мене зовсім не турбує.

Відмова : Я щойно спробував це сьогодні, у мене немає довгострокового досвіду, щоб підкріпити це!


4
Це рекомендований спосіб зробити це. Старий спосіб інтеграції msbuild для відновлення нугів у прийнятій відповіді - це питання, і я можу підтвердити, що NuGet.config поряд з sln працює для нас із автоматичним відновленням пакунків. Поклавши його у загальний батьківський каталог, я не можу підтвердити.
9

1
Як помістити NuGet.Config у загальну батьківську папку для всіх рішень (у TFS), щоб вони могли посилатися? Єдиний спосіб мені знати - це папка .nuget під кожним рішенням, що має файл nuget.config; і якщо "repositorypath value = .packages", то він створює підпапку під .nuget на зразок: C: \ TFS \ Comp \ Ent \ SolABC \ .nuget \ .packages - це не вирішує вкладені проекти / рішення чистим способом. що також має працювати над автоматизованою побудовою TFS. Прийнята відповідь вимагає певної роботи, кодованої рукою, плюс "значення repositorypath = $ \ .. \ .. \ .. \" Це не працює, якщо є вкладені проекти, що мають різні відносні шляхи.
hB0,

2
Працює з Visual Studio 2015 та Nuget 3.4.3
Hüseyin Yağlı

Він не тільки швидко видалить старіший пакет, він перезапише і порушить HintPath, який ви кодували у файл csproj. @ hB0 вірно. Це працює лише для відносно простих рішень. Коли ви потрапляєте у складну структуру робочого простору TFS з філіями, спільними проектами тощо, вона не вдається ефективно масштабуватися.
gravidThoughts

20

У мене NuGet версії 2.8.50926 з VS 2013. Не потрібно використовувати кілька файлів nuget.config або використовувати складні структури каталогів. Просто змініть файл за замовчуванням, розташований тут:

%APPDATA%\Roaming\NuGet\NuGet.Config

Ось вміст мого файлу:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="repositoryPath" value="C:\Projects\nugetpackages" />
  </config>
  <activePackageSource>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </activePackageSource>
</configuration>

Тому всі пакунки переходять у папку "C: \ Projects \ nugetpackages", незалежно від того, де знаходиться рішення.

У всіх своїх рішеннях просто видаліть наявні папки "пакунків". Потім складіть своє рішення, і NuGet автоматично відновить відсутні пакети в новому, централізованому вами каталозі.


Це, безумовно, найпростіше рішення з усіх, і воно заслуговує більшої любові!
Кораєм

2
це сьогодні найпростіше рішення, але у вашій відповіді відсутнє одне. вам все ще потрібно мати справу з HintPath у файлах csproj кожного проекту. Вони не будуть автоматично націлені на новий шлях. я прав?
batmaci

Дійсно, в деяких моїх старих проектах іноді є посилання на папку "старих" пакетів. Однак для мене все працює правильно, тож я думаю, що глобальна установка має перевагу.
Матьє

для OSX див. docs.microsoft.com/en-us/nuget/consume-packages/… . Мені подобається ідея mklink нижче.
sgtz


3

З версії Visual Studio 2013, оновлення 4 та версії менеджера пакунків Nugget> 2.8.5 ...

Створіть файл nuget.config в корені сховища.

вміст файлу:

<configuration>
  <config>
    <add key="repositoryPath" value="packages" />
  </config>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
  </packageSources>
</configuration>

Це призведе до того, що всі пакунки перейдуть до папки пакунків на рівні файлу nuget.config вашого файлу.

Тепер ви можете перейти до кожної нульової консолі .sln з командою 'update-package -reinstall'

Якщо вам подобається декілька сховищ на одному рівні, і чим поділитися однією і тією ж папкою пакунків, спробуйте скористатися способом переходу на одну папку вгору.

 <add key="repositoryPath" value="..\packages" />

Але таким чином ви спричиняєте, що посилання на цільові пакети csproj спрямовує одну папку вгору за межами шляху репозиторія.


3

Я створив пакет NuGet, який прозоро перетворює всі посилання NuGet у проекті у формат-відносний $ (SolutionDir). Це робиться за допомогою трансформації XSLT вбудованого часу, тому вам не потрібно рубати файл проекту вручну. Ви можете оновити свої пакети вільно, це нічого не порушить.

https://www.nuget.org/packages/NugetRelativeRefs

Або якщо ви використовуєте Visual Studio 2015 Update 3, ви можете просто перенести посилання вашого пакету у project.jsonформу, описану тут: https://oren.codes/2016/02/08/project-json-all-the-things


На жаль, схоже, що Microsoft відходить від project.json . Також мені подобається ваш нут-пакет. Деякий час тому я використовував NuGetReferenceHintPathRewrite, який робить майже те саме, але по-іншому
Андрій Борисько

2

Оновлення мого досвіду з nuget 2.8.3. Це було відносно просто. Усього було ввімкнено відновлення пакета із рішення клацання правою кнопкою миші. Редагував NuGet.Config і додав наступні рядки:

  <config>
    <add key="repositorypath" value="..\Core\Packages" />
  </config>

Потім відновив рішення, він завантажив усі пакунки в потрібну папку та оновив посилання автоматично. Я робив те ж саме для всіх своїх інших проектів, де завантажувались лише додаткові пакети та посилалися на існуючі пакунки. Звідси спільне сховище пакетів для всіх проектів, як було встановлено.

Ось покрокова процедура для відновлення пакета.

http://blogs.4ward.it/enable-nuget-package-restore-in-visual-studio-and-tfs-2012-rc-to-building-windows-8-metro-apps/


2

Просто жорстке посилання / пакети до потрібного загального місця. Тоді ваш проект не буде порушений для інших користувачів, у яких немає спеціального пакету.

Відкрийте командний рядок як адміністратор та використовуйте

mklink /prefix link_path Target_file/folder_path

2

Для будь-якого суттєвого рішення наведені вище відповіді будуть недостатніми. Досить просто, складна структура робочого простору TFS з різними відносними шляхами, розгалуженнями, спільними проектами тощо робить неможливим єдине центральне сховище.

Використання ($ SolutionDir) - це крок у правильному напрямку, але ручне кодування файлу csproj за допомогою ($ SolutionDir) стане досить стомлюючим у кодовій базі з сотнями пакетів, які регулярно оновлюються (кожного разу, коли відбувається оновлення, HintPath перезаписується новий відносний шлях). Що станеться, якщо вам доведеться запустити Update-Package -Reinstall.

Існує чудове рішення під назвою NugetReferenceHintPathRewrite . Він автоматизує введення ($ SolutionDir) у підказки безпосередньо перед побудовою (без фактичної зміни файлу csproj). Я думаю, це може бути легко включено в автоматизовані системи побудови


1

Короткий підсумок для тих, хто про VS 2013 professional з версією NuGet : 2.8.60318.667

Ось як би ви направляли пакунки на шлях відносно папки .nuget:

<configuration>
  <config>
    <add key="repositoryPath" value="../Dependencies" />
  </config>
</configuration>

Наприклад, якщо ваше рішення (.sln файл) перебуває в C: \ Projects \ MySolution, коли ви вмикаєте відновлення пакету NuGet, папка .nuget створюється так: C: \ Projects \ MySolution.nuget і пакети будуть завантажені в такий каталог: C: \ Проекти \ MySolution \ Залежності

ПРИМІТКА: З якихось (невідомих) причин, щоразу, коли я оновлюю "repositoryPath", мені доведеться закрити і знову відкрити рішення, щоб зміни вступили в силу


Зауважте, що на тезі конфігурації, що закривається, відсутня коса риса.
Мун


0

для тих, хто використовує пакет як менеджер пакунків, для файлу залежностей існує опція автоматичного посилання:

storage: symlink

btw: пакет використовує nuget

довідка: https://fsprojects.github.io/Paket/dependitions-file.html

Якщо ви хочете якомога менше модифікувати, ви можете просто періодично очищати підкаталоги зі скриптом. тобто. Поведінка Nuget за замовчуванням полягає в копіюванні файлів з глобального місця в локальну папку пакунків, тому видаліть ці файли згодом.


0

Я просто використовую з'єднання NTFS, щоб зробити всі папки пакунків прямими до однієї папки над корінням сховища. Чудово працює. Немає проблем з паралельним відновленням пакунків у кількох рішеннях. Однією з переваг цього є те, що вам не доведеться взагалі нічого перенастроювати у вихідному коді, наприклад сотні відносних шляхів підказки у ваших .csproj файлах. Це "просто працює", дозволяючи файловій системі обробляти перенаправлення та моделювання однієї папки пакунків.

Просто стежте за проблемами "git". Хоча 'git status' через командний рядок не демонструє жодних нестандартних змін, я помітив, що GitKraken бачить перехід 'package' як нестандартний файл . Він навіть показує помилки на зразок "файл - це каталог", коли ви клацаєте на нього. GitKraken також спробує сховати цей "файл", якщо ви перезавантажите, знищивши з'єднання та відновивши його як фактичний файл, що містить текст із вихідним файлом. Дуже дивна поведінка. Можливо, вдасться обійти це, переконавшись, що файл пакунків додано до вашого .gitignore.


-1

Це інструкції щодо NuGet 2.1: http://docs.nuget.org/docs/release-notes/nuget-2.1

Не потрібно редагувати файли рівня рішення.

Працює з Visual Studio 2013 та трьома проектами обміну рішеннями.

Не забудьте оновити рівень рішення NuGet (кожен nuget.exe у папках .nuget).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.