Fluent NHibernate 无法在测试的调试模式下从 GAC 加载 MySql.Data

发布于 2024-11-29 16:48:47 字数 1155 浏览 2 评论 0原文

我得到以下代码:

    var cfg = new Configuration();
    cfg.Configure();
    FluentConfiguration config = Fluently.Configure(cfg)
        .Mappings(
            m => m.FluentMappings.AddFromAssemblyOf<InputMapping>());
    s_SessionSource = new SessionSource(config);

当我调试单元测试并出现以下错误时,最后一行抛出异常:

无法加载文件或程序集“MySql.Data”或其之一 依赖关系。系统找不到指定的文件。

问题是它没有说明它尝试使用哪个版本。 我尝试使用以下配置捕获所有版本:

 <dependentAssembly>
    <assemblyIdentity name="MySql.Data"
                      publicKeyToken="c5687fc88969c44d"
                      culture="neutral" />
    <bindingRedirect oldVersion="1.0.0.0-6.3.6.0"
                     newVersion="6.3.7.0" />
 </dependentAssembly>

但问题仍然存在。奇怪的是,异常没有说明任何有关版本的信息,但在这种情况下通常会这样做。

Fluent NHB 是 3.1 版本的最新 1.2 NHB 是 3.2 连接器是 6.3.7.0

我正在使用 MSTest。当我在没有调试的情况下运行测试(运行检查测试)时,它不会抛出任何异常并成功完成(它确实使用 MySQL 测试数据库执行操作,因此在这种情况下它会找到 MySql.Data.dll 并插入行,例如没有问题) 。

更新 好吧,当我从 GAC 获取 MySql.Data.dll 并将其作为文件引用并设置“复制本地”时,它终于开始在调试中工作。这是什么情况?为什么在调试时无法从GAC加载它,而在简单运行模式下可以?

I got the following code :

    var cfg = new Configuration();
    cfg.Configure();
    FluentConfiguration config = Fluently.Configure(cfg)
        .Mappings(
            m => m.FluentMappings.AddFromAssemblyOf<InputMapping>());
    s_SessionSource = new SessionSource(config);

last line throws exception when I debug my unit test with following error:

Could not load file or assembly 'MySql.Data' or one of its
dependencies. The system cannot find the file specified.

problem is it doesn't say what version it did try to use.
I tried to catch all versions with following configuration:

 <dependentAssembly>
    <assemblyIdentity name="MySql.Data"
                      publicKeyToken="c5687fc88969c44d"
                      culture="neutral" />
    <bindingRedirect oldVersion="1.0.0.0-6.3.6.0"
                     newVersion="6.3.7.0" />
 </dependentAssembly>

but problem persists. Its pretty odd that exception doesn't say anything about version , it usually does in such cases.

Fluent NHB is latest 1.2 for 3.1 version NHB is 3.2 connector is 6.3.7.0

I am using MSTest. When I run test without debug (Run Checked Test) it doesn't throw any exceptions and completes successfully ( it does perform manipluations with MySQL test database so in that case it finds MySql.Data.dll and inserts row for example with no problems).

UPDATE okay when I took MySql.Data.dll from GAC and referenced it as a file, and setup Copy Local it finally started to work in debug. What is the case? Why it cannot load it from GAC in debug, and can in simple run mode?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

兮子 2024-12-06 16:48:47

也许 32/64 位执行配置有问题?两个平台的 DLL 相同,但 .exe 不同。您可以检查您的测试项目是否配置为 AnyCPU。

Perhaps a problem with 32/64 bits execution configuration? The DLL is the same for both platforms, but the .exe is not. You could check if your test project is configured to AnyCPU.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文