Мой пакет NuGet не обновляется в проектах, которые используют его как зависимость - PullRequest
0 голосов
/ 22 января 2019

Простите за то, что должно быть очень простым упущением с моей стороны, но я просто не могу заставить это работать должным образом.

Я создаю библиотеку классов .NET Framework 4.6, которую нужно загружать другим приложениям изчастный репозиторий nuget.Вот мой процесс:

  1. У меня есть тестовый проект, ConsoleApp5.Он имеет простую основную функцию.
  2. Я загружаю свой пакет NuGet, MyPackage (щелкните правой кнопкой мыши проект и выберите «Управление пакетами NuGet», выберите соответствующий репозиторий и пакет, нажмите «Установить»).
  3. Iзапустить мой тестВ этом случае я просто пытаюсь создать экземпляр класса, что-то не сложное.Я получаю сообщение об ошибке доступа к классу.
  4. Вернувшись в MyPackage, я заменяю все вхождения слова protected на public.Я также добавляю новый класс, щелкая правой кнопкой мыши по проекту, выбирая «Добавить элемент», нацеливаясь на класс и присваивая ему имя TestClass.
  5. . Я перехожу в Project> MyPackage Properties ...> Application (вкладка)> Информация о сборке, и я вручную обновляю номер патча версии на единицу.Итак, теперь это 1.0.5.
  6. Я иду в каталог проекта в командной строке разработчика и запускаю следующую команду: C:\Users\jptak\Downloads\nuget.exe pack -Version 1.0.5
  7. Затем я запускаю следующую команду, чтобы запустить обновление(Успешное сообщение: Your package was pushed.): C:\Users\jptak\Downloads\nuget.exe push MyPackage.1.0.5.nupkg MySecretCodeGoesHere -src http://my.nuget.server.goes.here.com
  8. Я возвращаюсь в ConsoleApp5, управляю пакетами NuGet, вижу обновление в соответствующем пакете и нажимаю стрелку обновления.Загрузка завершена, и новый номер версии уже есть.
  9. Я использую новые классы или проверяю, исправлены ли старые ошибки и все ли мои тесты не пройдены.TestClass там нет.

Это наводит меня на мысль, что код, который я пишу, не попадает на сервер NuGet. Кто-нибудь знает, что мне не хватает в этом процессе, чтобы обновлять самую последнюю версию кода на сервере?

Этот процесс мне чужд, поскольку я не являюсь .NETразработчик (я в основном работаю с PHP).

Вот еще некоторые сведения о моих настройках IDE:

  • В Build> Configuration Manager ...> Debug был переключен на Release
  • Я пытался построить, перестроить и очистить свой проект.Я не видел, чтобы какой-либо из этих процессов имел какое-либо влияние на код, выдвигаемый вообще.

Вот код из моего ConsoleApp5:

namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            string testclient = "testclient";
            string testpass = "testpass";
            string scope = "validate-contract";
            string accessToken = "";
            string retrievedScope = "";

            MyPackage.TestClass test = new MyPackage.TestClass();
        }
    }

Ошибка:TestClass не существует в пространстве имен.Вы забыли ссылку на сборку?

Вот код TestClass в MyPackage:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MyPackage
{
    public class TestClass
    {
        public TestClass()
        {

        }
    }
}

Используемый мной сервер NuGet: https://github.com/Daniel15/simple-nuget-server

РЕДАКТИРОВАТЬ 1 После проверки файла .nupkg я могу подтвердить, что старый код все еще там и что новый код не попал в .nupkg.Кажется, это подтверждает идею о том, что проблема связана с процессом упаковки, а не с сервером nuget.Как обновлять dll файлы перед каждым nuget pack / nuget push?

1 Ответ

0 голосов
/ 22 января 2019

бит для комментария, не совсем ответ, но здесь мы идем:

Итак, главные советы по отладке пакетов NuGet:

  • Загрузите пакет вручную. Файл .nupkg - это просто zip-файл, который можно открыть с помощью 7Zip или любого другого инструмента архивирования.

  • Оказавшись внутри, вы можете проверить как файл .nuspec, который использовался для упаковки пакета, так и внутри папки lib находятся предоставленные dll.

  • Декомпилятор, такой как DotPeek или ILSpy , может использоваться на dll, чтобы точно видеть, что происходит внутри dll.

Возможные причины ваших симптомов могут включать ложный успех сервера NuGet, или ваше приложение не может обновить пакет и продолжает ссылаться на старый.

...