External Issue
Details
Details
Assignee
OrenE
OrenEReporter
Kenneth Cochran
Kenneth CochranComponents
Affects versions
Priority
Who's Looking?
Open Who's Looking?
Created January 7, 2010 at 1:25 PM
Updated October 7, 2010 at 9:41 AM
Resolved January 7, 2010 at 9:30 PM
To reproduce:
Create a solution with two projects; an executable and a class library.
Add an entity class to the class library
Add configuration and mapping xml files
Both xml files are embedded resources. The cfg embedded in the executable, the hbm embedded in the class library.
Also tried Fluent NHibernate API with similar results.
I experimented and tried three different scenarios. NHibernate is able to retrieve the the embedded hbm.xml from the class library in all three scenarios:
Class library referenced by executable - worked as expected
Class library dynamically loaded by executable in the same directory - worked as expected
Class library dynamically loaded from subdirectory - see below
NHibernate.MappingException was unhandled
Message="Could not compile the mapping document: Employer.Employer.hbm.xml"
Source="NHibernate"
StackTrace:
at NHibernate.Cfg.Configuration.LogAndThrow(Exception exception)
at NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc)
at NHibernate.Cfg.Configuration.ProcessMappingsQueue()
at NHibernate.Cfg.Configuration.AddDocumentThroughQueue(NamedXmlDocument document)
at NHibernate.Cfg.Configuration.AddXmlReader(XmlReader hbmReader, String name)
at NHibernate.Cfg.Configuration.AddInputStream(Stream xmlInputStream, String name)
at NHibernate.Cfg.Configuration.AddResource(String path, Assembly assembly)
at NHibernate.Cfg.Configuration.AddAssembly(Assembly assembly)
at NHibernateTest.Program.Main() in C:\Documents and Settings\Kenneth Cochran\My Documents\Visual Studio 2008\Projects\NHibernateTest\NHibernateTest\Program.cs:line 31
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException: NHibernate.MappingException
Message="persistent class Employer.Employer, Employer not found"
Source="NHibernate"
StackTrace:
at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String fullName, String errorMessage)
at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForNameChecked(String name, Mappings mappings, String errorMessage)
at NHibernate.Cfg.XmlHbmBinding.ClassBinder.BindClass(XmlNode node, IDecoratable classMapping, PersistentClass model, IDictionary`2 inheritedMetas)
at NHibernate.Cfg.XmlHbmBinding.RootClassBinder.Bind(XmlNode node, HbmClass classSchema, IDictionary`2 inheritedMetas)
at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.AddRootClasses(XmlNode parentNode, IDictionary`2 inheritedMetas)
at NHibernate.Cfg.XmlHbmBinding.MappingRootBinder.Bind(XmlNode node)
at NHibernate.Cfg.Configuration.AddValidatedDocument(NamedXmlDocument doc)
InnerException: System.IO.FileNotFoundException
Message="Could not load file or assembly 'Employer' or one of its dependencies. The system cannot find the file specified."
Source="mscorlib"
FileName="Employer"
FusionLog="=== Pre-bind state information ===\r\nLOG: User = KVPCXP
Kenneth Cochran\r\nLOG: DisplayName = Employer\n (Partial)\r\nLOG: Appbase = file:///C:/Documents and Settings/Kenneth Cochran/My Documents/Visual Studio 2008/Projects/NHibernateTest/NHibernateTest/bin/Debug/\r\nLOG: Initial PrivatePath = NULL\r\nCalling assembly : NHibernate, Version=2.1.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4.\r\n===\r\nLOG: This bind starts in default load context.\r\nLOG: No application configuration file found.\r\nLOG: Using machine configuration file from c:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\config\\machine.config.\r\nLOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).\r\nLOG: The same bind was seen before, and was failed with hr = 0x80070002.\r\n"
StackTrace:
at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
at NHibernate.Util.ReflectHelper.TypeFromAssembly(AssemblyQualifiedTypeName name, Boolean throwOnError)
at NHibernate.Util.ReflectHelper.ClassForName(String name)
at NHibernate.Cfg.XmlHbmBinding.Binder.ClassForFullNameChecked(String fullName, String errorMessage)
InnerException: