DotNet build - Ссылки на пакеты в .NET FW Build - PullRequest
0 голосов
/ 05 июля 2019

Я застрял на фундаментальном понимании того, как построить проект вне Visual Studio, используя вместо этого командную строку dotnet.exe. Данный проект представляет собой консольное приложение .NET Framework 4.7.2, без возможности преобразования его в .NET Core.

Я создал очень простое консольное приложение, в котором есть ровно одна ссылка на пакет на стороннюю библиотеку, которую я загружаю через Nuget. Visual Studio понимает, что когда она восстанавливает эти пакеты, что происходит путем загрузки их в подкаталог / packages, она должна искать там ссылки при сборке. dotnet.exe, однако, не знает об этом, поскольку сборка завершается с ошибками ссылки. И я не вижу опции, в которой я могу указать dotnet.exe искать в определенном месте (/ packages) зависимости.

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

Полный набор «Program.cs» в моем консольном приложении .NET FW:

using JetBrains.Annotations;

namespace DotnetRestoreThisJawn
{
    class Program
    {
        static void Main([NotNull] string[] args)
        {
        }       
    }
}

И ссылка на пакет в моем .csproj:

  <ItemGroup>
    <PackageReference Include="JetBrains.Annotations">
      <Version>2018.3.0</Version>
    </PackageReference>
  </ItemGroup>

Это команда восстановления nuget, которую я выполняю, которую я запускаю на уровне каталога решения, а затем она создает каталог / packages и восстанавливает пакет, как и ожидалось. Каталог пакетов в этом случае является родственным каталогом проекта консоли.

dotnet restore --no-cache -f --force-evaluate --interactive --packages packages

А затем команда сборки:

dotnet build --force

Что приводит к:

Program.cs(2,7): error CS0246: The type or namespace name 'JetBrains' could not be found...

Итак, ошибка понятна, но я не уверен, как заставить dotnet.exe узнать, где найти зависимость, или как я должен реструктурировать вещи так, чтобы я восстановил зависимости в нужном месте.

1 Ответ

0 голосов
/ 05 июля 2019

Для .NET 4.7.2 команда CLI dotnet «сборка dotnet» не восстанавливает пакеты NuGet.

Вы должны использовать команду dotnet restore перед.

В прошлом в некоторых случаях это не работало для меня.

Я решил использовать команду восстановления исполняемого файла NuGet ( nuget.exe ).

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