gpt4 book ai didi

.net - MSBuild (TFS) 中的 Nhibernate.Bytecode.CaSTLe 问题

转载 作者:行者123 更新时间:2023-12-03 18:11:37 26 4
gpt4 key购买 nike

我们有一个 Fluent NHibernate 映射测试正在我们的本地机器上传递,但是当我们 checkin TFS 时,测试在构建服务器上失败了。我们正在使用 MSTest。我们得到的错误是:

NHibernate.Bytecode.UnableToLoadProxyFactoryFactoryException:无法在代理工厂类的配置过程中加载类型“NHibernate.ByteCode.CaSTLe.ProxyFactoryFactory,NHibernate.ByteCode.CaSTLe”。
可能的原因有:
- 未部署 NHibernate.Bytecode 提供程序程序集。
- 用于初始化 session-factory 部分的 'proxyfactory.factory_class' 属性的 typeName 格式不正确。

解决方案:
确认您的部署文件夹包含以下程序集之一:
NHibernate.ByteCode.LinFu.dll
NHibernate.ByteCode.CaSTLe.dll ---> System.IO.FileNotFoundException:无法加载文件或程序集“NHibernate.ByteCode.CaSTLe”或其依赖项之一。系统找不到指定的文件。警告:程序集绑定(bind)日志记录已关闭。
要启用程序集绑定(bind)失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。
注意:有一些与程序集绑定(bind)失败日志相关的性能损失。
要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

我们检查了放置文件夹,NHibernate.Bytecode.CaSTLe.dll 在那里。我们有对 CaSTLe.Core、CaSTLe.DynamicProxy2、Iesi.Collections、log4net、NHibernate 和 NHibernate.ByteCode.CaSTLe 的 dll 和引用。我们已经通过 MSBuild 使用 drop 文件夹中的命令提示符运行了测试,但仍然出现错误。我们的流利映射看起来像这样(NHibernateConfig.MappingConfiguration())调用实际的映射,自动映射):

Fluently.Configure()
.Database(SQLiteConfiguration.Standard.ShowSql().InMemory())
.Mappings(NHibernateConfig.MappingConfiguration())
.BuildConfiguration();

任何想法为什么会这样?

最佳答案

如果我记得字节码程序集是如何工作的,那么您实际上并没有对它们进行有用的引用。那就是您没有在代码中专门使用他们的类之一。结果,“智能”引用复制导致这些引用未被拉入。(我可能是在编造这个,抱歉)。

为了解决这个问题,您可以:a) 使适当的字节码程序集成为 Copy Always 内容引用 (meh) 或 b) 创建一个愚蠢的小类(私有(private)静态),它引用实际字节码程序集 (meh+1) 中的任何单个类。

我确信还有另一种关于强制引用被兑现的替代方案,但这两个应该是最简单的 20 秒解决方案。

关于.net - MSBuild (TFS) 中的 Nhibernate.Bytecode.CaSTLe 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com