में एनएचबर्ननेट 1.2 मेरे पास एनएचबीरनेट 1.2 पर आधारित कुछ परियोजनाएं हैं और मैं उन्हें .NET 4.0 समाधान में जोड़ना चाहता हूं, लेकिन मुझे एक अस्पष्ट मैच अपवाद मिलता है।
कोई फर्क नहीं पड़ता कि इन परियोजनाओं को 2.0 या 4.0 ढांचे पर लक्षित किया गया है या नहीं।
यह काम करता है अगर मैं उन्हें .NET 3.5 समाधान में जोड़ता हूं।एनएचईटी 4.0 समाधान
क्या किसी के पास इसका अनुभव है?
[AmbiguousMatchException: Ambiguous match found.]
System.RuntimeType.GetMethodImpl(String name, BindingFlags bindingAttr, Binder binder, CallingConventions callConv, Type[] types, ParameterModifier[] modifiers) +9607924
System.Type.GetMethod(String name) +29
Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.LockBlockExpression.Emit(IEasyMember member, ILGenerator gen) +192
Castle.DynamicProxy.Builder.CodeBuilder.SimpleAST.ExpressionStatement.Emit(IEasyMember member, ILGenerator gen) +52
Castle.DynamicProxy.Builder.CodeBuilder.AbstractCodeBuilder.Generate(IEasyMember member, ILGenerator il) +370
Castle.DynamicProxy.Builder.CodeBuilder.EasyMethod.Generate() +71
Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.EnsureBuildersAreInAValidState() +706
Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.BuildType() +90
Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateType() +55
Castle.DynamicProxy.Builder.CodeGenerators.ClassProxyGenerator.GenerateCode(Type baseClass, Type[] interfaces) +573
Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateClassProxy(Type theClass, Type[] interfaces) +87
Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type baseClass, Type[] interfaces, IInterceptor interceptor, Boolean checkAbstract, Object[] argumentsForConstructor) +116
NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) +136
[HibernateException: Creating a proxy instance failed]
NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session) +270
NHibernate.Persister.Entity.AbstractEntityPersister.CreateProxy(Object id, ISessionImplementor session) +17
NHibernate.Impl.SessionImpl.DoLoadByClass(Type clazz, Object id, Boolean checkDeleted, Boolean allowProxyCreation) +354
NHibernate.Impl.SessionImpl.InternalLoad(Type clazz, Object id, Boolean eager, Boolean isNullable) +52
NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session) +37
NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session, Object owner) +55
NHibernate.Impl.SessionImpl.InitializeEntity(Object obj) +187
NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList hydratedObjects, Object resultSetId, ISessionImplementor session) +229
NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) +702
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) +62
NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) +51
NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters) +18
NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes) +81
NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session) +36
NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria, IList results) +315
NHibernate.Impl.SessionImpl.Find(CriteriaImpl criteria) +66
NHibernate.Impl.CriteriaImpl.List() +54
[my code calling Criteria.List()]
आपको इसके बारे में एक अस्पष्ट मैच खोजने के लिए इसे डीबग करना होगा। यदि यह वास्तव में एक .NET 4 चीज है, तो ऐसा लगता है जैसे कैसल एक विशिष्ट सूची के बिना रनटाइम में एक विशिष्ट .NET विधि को देखने के लिए प्रतिबिंब का उपयोग कर रहा है और .NET 4 अब उस विधि (!) के एकाधिक अधिभार प्रदान करता है। यदि आप एनएचबीरनेट और/या कैसल में डीबग कर सकते हैं (यानी यदि आपको पीडीबी मिल गया है, या यदि आपने उन्हें स्वयं बनाया है) यह काफी सरल होना चाहिए। – Rup
रुपए, आप सही हैं। मैंने [1] में देखा है कि कैसल मॉनिटर देख रहा है। अंदर, लेकिन .NET 4.0 से उस विधि में 2 हस्ताक्षर हैं। मैं कैसल डायनैमिक प्रॉक्सी 1.1.5 के स्रोतों को खोजने में सक्षम नहीं हूं, मैं इसे पुन: संकलित नहीं कर सकता। वैसे भी धन्यवाद। [1] http://www.symbolsource.org/Public/Metadata/Project/Castle/1.0-RC3/Debug/All/Castle.DynamicProxy/Castle.DynamicProxy/Builder/CodeBuilder/SimpleAST/LockBlockExpression.cs – ssambi
आप कैसल का पुराना कोड यहां प्राप्त कर सकता है: http://github.com/castleproject/castle –