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