Разница в том, как работает nuget и прямая ссылка на dll

#.net #.net-core #nuget #msal #nuget-spec

#.net #.net-ядро #nuget #msal #nuget-спецификация

Вопрос:

Я новичок в .Net world и все еще пытаюсь освоиться с этим. У меня есть .Проект Net Core 2.1, и я пытаюсь ссылаться на Microsoft.Идентификация.Клиент.Расширения и Microsoft.Идентификация.Клиентские библиотеки непосредственно в проекте. Я загрузил файлы nupkg из nuget и извлек пакет. Я скопировал библиотеки, присутствующие в lib netcoreapp2.1, в каталог моего проекта. Я добавил следующее в csproj.

   <ItemGroup>
    <Reference Include="Microsoft.Identity.Client">
      <HintPath>Microsoft.Identity.Client.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Identity.Client.Extensions.Msal">
      <HintPath>Microsoft.Identity.Client.Extensions.Msal.dll</HintPath>
    </Reference>
  </ItemGroup>

  

Но в списке Microsoft есть невыполненная зависимость.Идентификация.Клиент.Расширения, которые не добавлены мной. Приложение все еще компилируется, но ведет себя не так, как ожидалось. Я просмотрел файл .nuspec и заметил, что nuget упоминает зависимости, как показано ниже, и когда проект возвращается к nuget для ссылки на библиотеки, он работает идеально. Это не тот случай, когда я загружаю библиотеки DLL и ссылаюсь на них вручную. Есть ли какой-либо способ добавить зависимости к существующей dll в моем файле .csproj. Проблема в том, что сбоя нет, и приложение просто ведет себя не так, как ожидалось.

 <dependencies>
      <group targetFramework=".NETCoreApp2.1">
        <dependency id="Microsoft.Identity.Client" version="4.15.0" exclude="Build,Analyzers" />
        <dependency id="System.Security.Cryptography.ProtectedData" version="4.5.0" exclude="Build,Analyzers" />
      </group>
</dependencies>
  

Я уверен, что механизм nuget где-то извлекает две зависимости

Комментарии:

1. Есть ли конкретная причина, по которой вы вручную добавляете ссылки вместо того, чтобы просто ссылаться на пакеты и позволять nuget работать со ссылками и зависимостями? Кажется, что это много утомительной и подверженной ошибкам работы.

2. У меня есть существующая инфраструктура, которая работает со ссылками на dll. Следовательно, у меня не было другого выбора, кроме как не загружать и использовать DLL. Я понял, что это подвержено ошибкам, как только я вошел в это.