繁体   English   中英

添加没有依赖项的NuGet软件包

[英]Add NuGet package without its dependencies

我确信我们很多人都遇到了这个问题,并且我在任何地方都无法解决问题。

我在许多项目中都有一个共享库(Common.Infrastructure.dll),并且我使用NuGet Server中内置的TeamCity托管此库。 该库内部依赖于NuGet软件包,例如Fluent Nhibernate,Log4net,StructureMap等。

很简单,在需要此共享依赖项的项目中执行“ Install-Package Common.Infrastructure”也将Fluent NHibernate,log4net,SM等添加为项目的“引用”。 我不会直接使用Common.Infrastructure的这些依赖关系,但显然最终会在输出(bin / debug)文件夹中使用它们。

有没有办法不通过内置的nuget(nuspec)支持引用这些依赖项?

Install-Package命令具有用于忽略依赖关系的标志。 例:

Install-Package Common.Infrastructure -IgnoreDependencies

请注意,他的实际问题是关于如何创建不添加依赖项的软件包,而不是如何安装没有依赖项的软件包。

使用Nuspec,您可以显式控制目标程序包引用了哪些程序包以及程序包中的哪些程序集。 但是,我认为没有办法完全按照NuGet的要求进行操作,因为无法向Visual Studio指示应将程序集复制到bin目录而不将其添加为项目引用。

我认为您的问题是将太多功能集成到单个程序集中的症状。 我建议您将Common.Infrastructure.dll拆分为单独的程序集,以实现功能的各个方面。 就像是:

  • Common.Infrastructure.Logging.dll-取决于Log4net
  • Common.Infrastructure.Database.dll-取决于Fluent Nhibernate
  • Common.Infrastructure.IoC.dll-取决于StructureMap
  • 任何其他合适的子装配
  • Common.Infrastructure.dll-一种新的较小的功能核心,仅取决于框架

当然,分解成的程序集的确切集合将取决于Common.Infrastructure.dll中的功能以及使用方式。 一旦为这些程序集中的每个程序集提供了单独的程序包,就可以选择在给定项目中引用哪些程序包,并将其限制为您真正需要的方面和依赖项。

有解决方案。

编辑您的nuspec文件,并仅添加所需的参考dll。 参考参考文件=“ dllwhichyouwantToreference.dll”参考

暂无
暂无

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

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