由于我是 .NET 开发的新手,我认为这是一个概念问题。
我的解决方案中有 3 个项目:
- Foo.Core:一个引用 Fluent NHibernate、NHibernate 和 Npgsql 的类库。这是我的业务层,包含服务、实体和 NHibernate 映射。
- Foo.Core.Tests:一个类库,其中包含引用 NUnit 和Foo.Core的测试;
- Foo.MVC:仅引用Foo.Core的 MVC 应用程序;
在Foo.Core我有FooService
一个GetFoo
方法,它Foo
从数据库返回一个(实体)实例。
在 MVC 项目中,我创建了一个实例FooService
并调用GetFoo
,但它引发了一个异常,即无法创建 NpgsqlDriver 实例。如果我添加对 Npgsql 的引用,它就可以工作。
Foo.Core已经引用了驱动程序,并且在那里打开了连接。为什么我需要在 MVC 项目中再次引用驱动程序?
编辑
经过更多搜索,我找到了这个链接。如果在 GAC 中引用它,则构建会忽略Copy Local,但我检查了 Npgsql.dll 并没有在那里注册。