Nuget:指定依赖项而不添加引用

ave*_*sse 8 nuget

我有一个包(比如,MyStuff.Data)需要EntityFramework(和其他)才能工作,但只能在内部工作.我不希望每个使用MyStuff.Data的项目也引用EntityFramework(以及所有其他项目),但dll总是需要在那里.

有没有什么方法可以添加EntityFramework作为MyStuff.Data的依赖项(以便它在packages文件夹中获取EntityFramework.dll),但没有引用添加到每个使用它的项目?

Xav*_*ter 4

不,那里没有。一个选项可能是嵌入 EntityFramework dll 并将其发送到您自己的包中,并明确说明在安装过程中应在目标项目中添加哪些引用。您可以使用包的 nuspec 中的元数据元素来指定这一点。更多信息可以在此处的文档中找到: http://docs.nuget.org/docs/reference/nuspec-reference#Specifying_Explicit_Assembly_References

请注意,嵌入特定版本的依赖项是对所有使用者的限制,这意味着您作为包生产者,将驱动您的使用者可以并且将使用哪个版本的 EF...这不是一个好主意所处的情况。

最好,您尝试抽象出任何非受控 (EF) 依赖项,并将真正的实现选择留给消费者(或者您提供包含实现的单独包,以便您的消费者仍然可以选择加入并使用您的实现)。