【问题标题】:Why one .net library needs the reference of the dependency of other .net library为什么一个.net库需要引用其他.net库的依赖
【发布时间】:2019-02-02 13:42:30
【问题描述】:
我遇到了一个奇怪的问题。我的解决方案中有多个 .net 标准类项目。有一个名为 Messaging (.csproj) 的 .net standard 2.0 类库项目,它使用 ActiveMQ 从其中推送和读取数据。本项目参考 Apache.NMS 库。现在我有另一个名为 Core (.csproj) 的项目,它引用了 Messaging 项目。在Core项目中Messaging项目内的类的构造函数调用期间,我收到System找不到Apache.NMS dll的错误。如果我在 Core 项目中添加这个引用,那么一切正常,但我真的不明白为什么会这样。使用纯 .net 框架的东西,我从来没有遇到过这个问题。将项目与自己的参考分开并独立工作。
任何人都可以帮忙吗?
我已经添加了来自 nuget 的所有引用
【问题讨论】:
标签:
c#
.net
visual-studio
.net-core
.net-standard
【解决方案1】:
经过大量研究,我找到了解决此问题的方法。发生的事情是在 .NET 框架/标准项目的 bin 文件夹中,引用项目的依赖 dll 没有被复制。
.NET Framework 项目解决方案:
打开 .csproj 文件并在第一个标签中添加以下行
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
.NET Standard / Core 项目的解决方案:
打开 .csproj 文件并在下面添加第一个标签
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
现在编译项目,您将看到 bin 文件夹中存在所有必需的 dll。
希望这可以帮助面临同样问题的其他人。