Jon*_*yMC 4 .net msbuild tfs integration-testing fluent-nhibernate
我们有一个Fluent NHibernate映射测试,它在我们的本地机器上传递,但是当我们检入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 '或其中一个依赖项.系统找不到指定的文件.WRN:程序集绑定日志记录已关闭.要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1.注意:程序集绑定失败日志记录会导致一些性能损失.要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog].
我们检查了drop文件夹,NHibernate.Bytecode.Castle.dll就在那里.我们有对Castle.Core,Castle.DynamicProxy2,Iesi.Collections,log4net,NHibernate和NHibernate.ByteCode.Castle的dll和引用.我们已经使用drop文件夹中的命令提示符通过MSBuild运行测试,但仍然会发生错误.我们的流畅映射看起来像这样(NHibernateConfig.MappingConfiguration())调用实际的映射,自动化):
Fluently.Configure().Database(SQLiteConfiguration.Standard.ShowSql().InMemory()).Mappings(NHibernateConfig.MappingConfiguration()).BuildConfiguration();
任何想法为什么会这样?
Rya*_*ell 11
如果我回想一下字节码组件是如何工作的,那么你实际上并没有对它们做出有用的引用.也就是说,您没有在代码中专门使用其中一个类.结果,"智能"参考复制导致这些不被拉入.(我可能会这样做,对不起).
为了解决这个问题,你可以:a)使相应的字节码组件成为Copy Always content reference(meh)或b)创建一个愚蠢的小类(私有静态),引用实际字节码组件中的任何单个类(meh + 1).
我确信还有另一种方法可以强制推荐引用,但这两种应该是最简单的20秒解决方案.
小智 6
有同样的问题,不得不在做了Fluently.Configure的类中添加引用.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using FluentNHibernate.Cfg;
using FluentNHibernate.Automapping;
using FluentNHibernate.Conventions.Helpers;
using FluentNHibernate.Conventions;
using FluentNHibernate.Conventions.AcceptanceCriteria;
using FluentNHibernate.Conventions.Inspections;
using FluentNHibernate.Conventions.Instances;
using FluentNHibernate.MappingModel;
using FluentNHibernate;
**using NHibernate.ByteCode.Castle;**
namespace CESP_NotifyLib
{
class SessionFactoryController
{
public SessionFactoryController()
{
}
public ISessionFactory GiveFactory()
{
return CreateSessionFactory();
}
**private static void ReferByteCode(){
//Just to make sure the ByteCodeCastle is loaded
ProxyFactory fake = new ProxyFactory();
}**
private static ISessionFactory CreateSessionFactory()
{
ReferByteCode();
var cfg = new NotifyFluentNhibernateConfiguration();
return Fluently.Configure()
.Database(
FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2005
.ConnectionString("Server=[MYSERVERIPADRESS]\\DBSERVER;Database=NotifyTest;User ID=NHibernateTester;Password=[MYPASSWORD];Trusted_Connection=False;")
)
.Mappings(m => {
m.AutoMappings
.Add(AutoMap.AssemblyOf<SubscriptionManagerRP>(cfg));
} )
.BuildSessionFactory();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8420 次 |
| 最近记录: |