Krzysztof, Can you advice anything regarding the issue?
On 12 окт, 18:08, Konstantin <[email protected]> wrote: > I does not work fine with the call and target framework 3.5. > I've saved the generated assembly and referenced it instead of using > DP, and in this config it works. > So the problem occures when DP emits unsigned assembly under VS debug > and FW 3.5 > > On 12 окт, 17:46, Krzysztof Koźmic <[email protected]> wrote: > > > > > yes, when I remove the call all works fine. > > > On 12/10/2010 11:30 PM, Konstantin wrote: > > > > Remove tuneDynamicProxy() call and restrict creation of signed > > > assemby in some other way. Issue can be repeoduced where DP creates > > > only unsigned assembly. > > > The check for whether to create unsigned assembly or not is based on > > > SecurityPermissionFlag.UnmanagedCode check. > > > > On 12 окт, 16:55, Krzysztof Koźmic<[email protected]> wrote: > > >> I ran it on .NET 4 under vs2010 and the code does not work at all. > > > >> Interestingly - for completely different reasons: > > > >> Unhandled Exception: System.TypeInitializationException: The type > > >> initializer for 'ConsoleApplication9.Program' threw an exception. ---> > > >> System.TypeInitializationException: The type initializer for > > >> 'Castle.DynamicProxy.Generators.Emitters.StrongNameUtil' threw an > > >> exception. ---> System.NotSupportedException: The Deny stack modifier > > >> has been obsoleted by the .NET Framework. Please > > >> seehttp://go.microsoft.com/fwlink/?LinkId=155571formoreinformation. > > >> at System.Security.CodeAccessSecurityEngine.Check(Object demand, > > >> StackCrawlMark& stackMark, Boolean isPermSet) > > >> at > > >> System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, > > >> StackCrawlMark& stackMark) > > >> at System.Security.CodeAccessPermission.Demand() > > >> at Castle.DynamicProxy.Generators.Emitters.StrongNameUtil..cctor() > > >> in > > >> c:\TeamCity\buildAgent\work\f0c43d96621436a8\src\Castle.Core\DynamicProxy\G > > >> enerators\Emitters\StrongNameUtil.cs:line > > >> 40 > > >> --- End of inner exception stack trace --- > > >> at > > >> Castle.DynamicProxy.Generators.Emitters.StrongNameUtil.get_CanStrongNameAss > > >> embly() > > >> at ConsoleApplication9.Program.tuneDynamicProxy() in > > >> c:\users\xtoff\documents\visual studio > > >> 2010\Projects\ConsoleApplication9\ConsoleApplication9\Program.cs:line 58 > > >> at ConsoleApplication9.Program..cctor() in > > >> c:\users\xtoff\documents\visual studio > > >> 2010\Projects\ConsoleApplication9\ConsoleApplication9\Program.cs:line 52 > > >> --- End of inner exception stack trace --- > > >> at ConsoleApplication9.Program.Main(String[] args) > > > >> Notice it fails even before any attempt to generate the proxy. > > >> Anyway - I remember there was some bug in VS2008 debugger, so you may > > >> have hit just that. > > > >> Which version of DP are you running? > > > >> On 12/10/2010 10:33 PM, Konstantin wrote: > > > >>> Following code causes exception if executed under VS2008 debugger. > > >>> Exception: > > >>> System.TypeLoadException: GenericArguments[0], 'ST2', on > > >>> 'Castle.Proxies.Invocations.IService_Method2[ST1]' violates the > > >>> onstraint of type parameter 'ST1'. > > >>> at Castle.Proxies.IServiceProxy.Method2[ST2](ST2 t) > > >>> at DPGenericsUnderDebugIssueDemo.Program.Main(String[] args) in C: > > >>> \WORK\TestsAndTries\DPGenericsUnderDebugIssueDemo > > >>> \DPGenericsUnderDebugIssueDemo\Program.cs: line 61 > > >>> This: > > >>> "GenericArguments[0], 'ST2', on > > >>> 'Castle.Proxies.Invocations.IService_Method2[ST1]'" > > >>> looks very strange.... > > >>> If executed without debugger it work ok. > > >>> public class C : ICloneable > > >>> { > > >>> public object Clone() > > >>> { > > >>> throw new NotImplementedException(); > > >>> } > > >>> } > > >>> public interface IService > > >>> { > > >>> void Method1<ST1>(ST1 t) where ST1 : class, new(); > > >>> void Method2<ST2>(ST2 t) where ST2 : ICloneable; > > >>> } > > >>> public class Component : IService > > >>> { > > >>> public void Method1<CT1>(CT1 t) where CT1 : class, new() > > >>> { > > >>> Console.WriteLine(string.Format("Method1 CT1:{0}", typeof > > >>> (CT1))); > > >>> } > > >>> public void Method2<CT2>(CT2 t) where CT2 : ICloneable > > >>> { > > >>> Console.WriteLine(string.Format("Method2 CT2:{0}", typeof > > >>> (CT2))); > > >>> } > > >>> } > > >>> internal class Program > > >>> { > > >>> [SecurityPermission(SecurityAction.Deny, Unrestricted = true, > > >>> Flags = SecurityPermissionFlag.UnmanagedCode)] > > >>> private static void tuneDynamicProxy() > > >>> { > > >>> Console.WriteLine(StrongNameUtil.CanStrongNameAssembly); > > >>> } > > >>> static Program() > > >>> { > > >>> //Restrict signed assembly generation > > >>> tuneDynamicProxy(); > > >>> } > > >>> private static void Main(string[] args) > > >>> { > > >>> ProxyGenerator g = new ProxyGenerator(); > > >>> var proxy = g.CreateInterfaceProxyWithTarget<IService>(new > > >>> Component(), new IInterceptor[0]); > > >>> try > > >>> { > > >>> proxy.Method1(new C()); > > >>> proxy.Method2(new C()); > > >>> } > > >>> catch (Exception e) > > >>> { > > >>> Console.WriteLine(e); > > >>> } > > >>> finally > > >>> { > > >>> Console.ReadLine(); > > >>> } > > >>> } > > >>> } -- You received this message because you are subscribed to the Google Groups "Castle Project Users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/castle-project-users?hl=en.
