在in之外的NHibernate错误映射程序集(ASP.NET)



我正在尝试动态映射一个或多个程序集,这些程序集本身动态加载到ASP中。网的网站。我有我的网。配置设置允许探测到一个名为"paks"的子目录(它也被设置为appSetting,所以我可以稍后构建我的路径来访问dll),这100%可以加载主程序集,但FluentNHibernate有问题:

我的。mapping是这样的:

 .Mappings(m => {
   foreach (String assembly in assemblies) {
     String path = String.Format("{0}{1}\{2}.dll", HttpRuntime.AppDomainAppPath, ConfigurationManager.AppSettings["Packages"], assembly);
     AssemblyName y = AssemblyName.GetAssemblyName(path);
     Assembly asm = Assembly.Load(y);
     m.FluentMappings.AddFromAssembly(asm);
   }
 })

当我运行它的时候,我得到了一个异常:

"无法编译映射文档:(XmlDocument)"

但是如果我将第二组dll复制到bin目录中,事情就神奇地开始工作了。我假设是因为现在NHibernate可以定位dll,而以前不能。我使用Assembly.Load()将它们动态加载到。net中没有任何问题,那么为什么NHibernate在加载后会出现问题呢?

谁有一个线索,我怎么能补救这个?

对不起,原来这是我对ASP的一个小小的误解。. NET探测和程序集加载。我认为一旦一个程序集被加载,它将能够被引用它的对象定位。但事实似乎并非如此。更糟糕的是,我认为探测将递归地向下遍历到子目录(显然不是这样),并且是我正在进行的初始加载所必需的(这也是事实)。我的程序集位于%root%/pak/pdf中,但我的探针仅设置为%root%/pak,这就是为什么即使加载了它,也无法被引用它的其他程序集找到的原因。

相关内容

最新更新