[英]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 core
和net 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.config
的Net 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.