Я застрял на фундаментальном понимании того, как построить проект вне 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 узнать, где найти зависимость, или как я должен реструктурировать вещи так, чтобы я восстановил зависимости в нужном месте.