-
- MethodInfo add_permission = typeof (AssemblyBuilder).GetMethod ("AddPermissionRequests", BindingFlags.Instance | BindingFlags.NonPublic);
- object builder_instance = Builder;
-
- try {
- // Microsoft runtime hacking
- if (add_permission == null) {
- var assembly_builder = typeof (AssemblyBuilder).Assembly.GetType ("System.Reflection.Emit.AssemblyBuilderData");
- add_permission = assembly_builder.GetMethod ("AddPermissionRequests", BindingFlags.Instance | BindingFlags.NonPublic);
-
- FieldInfo fi = typeof (AssemblyBuilder).GetField ("m_assemblyData", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField);
- builder_instance = fi.GetValue (Builder);
- }
-
- var args = new PermissionSet [3];
- declarative_security.TryGetValue (SecurityAction.RequestMinimum, out args [0]);
- declarative_security.TryGetValue (SecurityAction.RequestOptional, out args [1]);
- declarative_security.TryGetValue (SecurityAction.RequestRefuse, out args [2]);
- add_permission.Invoke (builder_instance, args);
- } catch {
- Report.RuntimeMissingSupport (Location.Null, "assembly permission setting");