Как обращаться к стандартной библиотеке из Full .Net, когда она имеет свои собственные зависимости NuGet - PullRequest
0 голосов
/ 27 мая 2018

У меня есть некоторая внутренняя логика в .NET Standard библиотеке (назовем это Service), и у меня должна быть точка входа двух типов: .Net Core Console App и Служба Windows в качестве точек входа в эту логику.Моя библиотека Service имеет свои собственные зависимости, и одна из этих зависимостей (DAL) использует NuGet, в частности MongoDB.Driver.Когда я его скомпилировал, в bin/debug Service не было никаких библиотек, связанных с монго.Но у Net Core Console App есть deps.json, runtimeconfig.json, runtimeconfig.dev.json файлы, и, насколько я понимаю, именно поэтому все прекрасно работает с Core Console.

Но это не работает с Windows Service (Net 4.6.1), что ссылается Standardbin/Debug также нет Mongo, и в результате, когда я запускаю его (он также настроен как консольное приложение), я получаю

FileNotFoundException: Could not load file or assembly 'MongoDB.Driver, Version=2.5.0.0

, и это разумное сообщение... но как это должно работать тогда?Обычно зависимости NuGet в Full .Net копируются с целевым проектом (а также копируются тем, кто ссылается на этот проект).Это не относится к стандартным библиотекам.Я просто боюсь изобретать велосипед здесь, может быть, есть хорошее существующее решение?

Ответы [ 3 ]

0 голосов
/ 31 мая 2018

Похоже, это тоже работает, но должно быть сделано в csproj .Net Standard.

<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

Я не уверен, какой подход лучше, жду комментариев.

0 голосов
/ 31 мая 2018

Похоже, что проект Full.Net просто возвращается к Packages.config, потому что он установлен по умолчанию в настройках VS.Я переключил это на PackageReference и удалил все изменения в файлах proj - теперь он работает так же, как и сейчас.

enter image description here

0 голосов
/ 27 мая 2018

У меня была похожая проблема;добавьте следующее в .csproj вашего полного проекта .NET.Объясняется на GitHub

<PropertyGroup>  
   <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
   <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
   <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
...