如何在Full .Net拥有自己的NuGet依赖项时引用标准库

时间:2018-05-27 14:55:08

标签: c# .net mongodb .net-core .net-standard

我在 .NET标准库中有一些后端逻辑(我们称之为Service)并且必须有两种类型的入口点: .Net Core Console App Windows服务作为该逻辑的入口点。我的Service库有它自己的依赖项,其中一个依赖项(DAL)使用NuGet,特别是MongoDB.Driver。当我编译它时,在bin/debug服务中没有任何与mongo相关的库。但是Net Core Console App确实有deps.jsonruntimeconfig.jsonruntimeconfig.dev.json个文件,据我所知,这就是为什么一切都与Core Console完美匹配。

但它不适用于引用Standard的Windows服务(Net 4.6.1)。 bin/Debug中也没有Mongo,因此当我运行它时(它也被配置为控制台应用程序)我得到了

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

这是合理的信息......但是这应该如何起作用呢?通常,Full .Net中的NuGet依赖项将与目标项目一起复制(并且还会复制到引用此项目的那些项目)。标准库不是这种情况。我只是害怕在这里重新发明轮子,可能有现成的解决方案吗?

3 个答案:

答案 0 :(得分:1)

我有类似的问题;将以下内容添加到完整.NET项目的.csproj中。 它在GitHub

上进行了解释
TIdHTTP

答案 1 :(得分:0)

看起来这也有效,但应该在.Net Standard的csproj中完成。

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

我不确定哪种方法更好,等待评论。

答案 2 :(得分:0)

看起来Full.Net项目只是回退到Packages.config,因为这是默认情况下在VS Setting中设置的。我已将此切换为PackageReference并删除了proj文件中的所有更改 - 它现在可以正常工作。

enter image description here