Опубликовать пакет символов * .snupkg в частной ленте в VSTS
blockquote>Вы можете опубликовать пакет символов .snupkg на NuGet.org или на любом сервере NuGet, который выбирает в этот опыт . Но у лазурного девопа в частном фиде такого опыта нет.
Подробную информацию вы можете получить из этой вики. NuGet Package Debugging & amp; Улучшения символов :
blockquote>
- При публикации пакетов и пакет символов, и файл .nupkg будут легко публиковаться на NuGet.org или на любом сервере NuGet, который включится в эту работу.
Причина :
Как мы знаем, когда мы используем
.snupkg
в Visual Studio, мы добавляем новое местоположение сервера символов в файл символов (. pdb) location:Но Visual Studio может анализировать только файл символов ( .pdb ) напрямую, а не пакет
.snupkg
, поэтому нам нужен сервер NuGet, чтобы помочь нам прочитать файл.pdb
из пакета.snupkg
. Фид Azure devops более склонен быть общим хранилищем пакетов.Таким образом, мы должны опубликовать пакет символов * .snupkg на NuGet.org или на любом сервере NuGet, который использует эту возможность .
Если вы не хотите делиться своим пакетом на nuget.org, вы можете разместить собственный сервер NuGet или использовать облегченное решение для решения этой проблемы. (Вы можете отлаживать пакет nuget с помощью частного канала).
Надеюсь, это поможет.
Ну, код Вы отправили (ref cards[n]
) может только работать с массивом (не список) - но Вы использовали бы просто (где foo
и bar
два значения):
static void Swap(ref int foo, ref int bar) {
int tmp = foo;
foo = bar;
bar = tmp;
}
Или возможно (если Вы хотите атомарный):
Interlocked.Exchange(ref foo, ref bar);
Лично, я не думаю, что обеспокоился бы методом подкачки, хотя - просто делают это непосредственно; это означает, что можно использовать (или для списка или для массива):
int tmp = cards[n];
cards[n] = cards[i];
cards[i] = tmp;
Если бы Вы действительно хотели записать метод подкачки, который работал или над списком или над массивом, то необходимо будет сделать что-то как:
static void Swap(IList<int> list, int indexA, int indexB)
{
int tmp = list[indexA];
list[indexA] = list[indexB];
list[indexB] = tmp;
}
(это было бы тривиально для создания этого дженерика) - однако, исходная "встроенная" версия (т.е. не метод) работающий над массивом будет быстрее.
Хорошая подкачка является той, где Вы не подкачиваете содержание. В C/C++ это было бы сродни свопингу указателей вместо того, чтобы подкачать содержание. Этот стиль свопинга быстр и идет с некоторой гарантией исключения. К сожалению, мой C# слишком ржав, чтобы позволить мне помещать его в код. Для простых типов данных этот стиль не дает Вам очень. Но после того как Вы привыкли к и должны иметь дело с большим (и более сложный) объекты, это может спасти Вашу жизнь.
Использовать:
void swap(int &a, int &b)
{
// &a != &b
// a == b OK
a ^= b;
b ^= a;
a ^= b;
return;
}
Я не знал, что я нахожусь в секции C#. Это код на Си++, но он должен иметь ту же основную идею. Я считаю, что ^ - это XOR и в C# тоже. Похоже, что вместо &
может понадобиться "ref"(?). Я не уверен.