我有一个包(比如说MyStuff.Data)需要EntityFramework(和其他)才能工作,但只能在内部工作。我不希望每个使用MyStuff.Data的项目也引用EntityFramework(以及所有其他项目),但dll总是需要在那里。
有没有办法可以将EntityFramework添加为MyStuff.Data的依赖项(以便它在packages文件夹中获取EntityFramework.dll),但是没有将参考添加到每个使用它的项目中?
答案 0 :(得分:3)
不,没有。一个选项可能是嵌入EntityFramework dll并将其发送到您自己的包中,并明确说明在安装期间应在目标项目中添加哪些引用。您可以使用包的nuspec中的元数据元素指定它。更多信息可以在这里的文档中找到: http://docs.nuget.org/docs/reference/nuspec-reference#Specifying_Explicit_Assembly_References
请注意,嵌入特定版本的依赖项是对所有使用者的限制约束,这意味着您作为包装生产者将推动您的消费者可以使用哪个版本的EF ...这是不是一个好的情况。
最好,您尝试抽象出任何非受控(EF)依赖关系,并将真正的实现选择留给消费者(或者您提供一个包含实现的单独包,因此您的消费者仍然可以选择加入并使用您的实现)