繁体   English   中英

为库项目安装的 nugets 是否也应该安装到应用程序项目中?

[英]Should nugets installed for library project also be installed to the application project?

如果我有一个库项目MyLib需要 Nuget XYZ ,并且我创建了依赖于MyLib的应用程序MyApp ,我是否需要将 nuget 依赖项显式添加到MyApp或者VS应该解决这个问题?

我找不到这个基本问题的明确答案,而且我的测试显示不确定的结果 - 我看到一些 DLL 被复制到 /bin 文件夹,而其他一些则没有。 在我的项目参考中,没有列出 Nuget 程序集,我不确定它们是否应该......现在有点“DLL地狱阴霾”!

来自 memory 处理复杂的 C#.NET 应用程序 - 是的,我相信有必要添加依赖项。

我开发的应用程序有这样的结构:

服务器 --> 插件 1 --> MongoDB NuGet --> 插件 2 --> MongoDB Z20055252BAD725BE70C329DC

我发现有必要将 MongoDB NuGet 引用添加到每个插件以及服务器组件。 一旦我这样做了,它就可以可靠地工作(尽管它确实有缺点,即对于 NuGet 库的每次更新,我都需要单独更新每个插件)。

如果有更简洁的解决方案很高兴得到纠正,只是想分享我的经验!

为库项目安装的 nugets 是否也应该安装到应用程序项目中?

这取决于你 Of course, adding the nuget package to the main project is not a trouble, it will not cause any problems, it is simple and convenient, but when you pay attention to the following points, there is no need to add the nuget package in addition .

在所有这些之前,有两种方法可以引用 nuget 包: packages.config 格式PackageReference 格式

Packages.config格式用于旧的net framework项目,而PackageReference格式用于新的 sdk 样式项目( net corenet standard )。

不过net framework项目也可以使用PackageReference(可以通过Tools --> Options --> Nuget Package Manager --> General --> Package Management ),net core和标准的包管理项目不能使用Packages.config

建议

1)如果库项目是Net framework ,实际上,你应该使用将相同的nuget添加到主项目中,在某些情况下,这些dll可以复制到你的MyApp项目的output路径中,

但是,如果您仍想在代码编辑器中使用这些 dll,intellisense 将不会列出它,在这种情况下,您应该在主项目中安装相同的 nuget package。

此外,只有这两个项目都使用PackageReference格式(带有 PackageReference 的Net Framework库项目和带有 PackageReference 的 MyApp Net Framework项目)

2)如果您的库项目是Net Standard (PacakgesReference nuget 格式),并且您的MyApp项目是带有packages.configNet Framework ,则主项目中的 dll 将丢失。 解决方法是在 MyApp.csproj 文件中添加这些节点:

<PropertyGroup>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>

然后您将在主项目中获得智能感知。

----------------------------------

或者您的 Myapp 项目是具有 PackageReference 格式的网络框架,您不应该添加该节点,您可以直接获取您想要的内容。

如果MyApp项目是Net Core (PackageReference),则不必担心这一点。

=================================

结论

为了满足您的要求,您最好使用Net Standard库项目,而您的 MyApp 项目最好使用PackageReference nuget 管理格式( Net Core或带有 PackageReference 格式的Net Framework )。

此外,您应该将您的 VS 更新到最新版本以获得更好的体验,以防有一些重要的修复。 此外,您可以参考类似的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM