At Lang.NEXT I met someone who was interested in using IKVM.Reflection and after he started porting his code, he ran into some missing functionality in IKVM.Reflection, so I've made some improvements there.
I've also fixed the remaining known issues with access stubs and "unloadable" (missing types) custom modifiers.
- Fix for recently introduced bug (with access stub rewrite). Bug #3512589.
- Changed build process to fall back to the NAnt task, if we can't find the resource compiler.
- Made WinForms message loop thread creation lazy to hopefully allow more applications to run without message loop thread. This is a (partial) workaround for bug #3515033.
- Changed ikvmc to read input files after processing all the options (to make -nowarn: and -warnaserror: options that follow the file names work for warnings produced during input file reading).
- Added support for type 2 access stubs for constructors.
- Bug fix. When an unloadable type is used in a method signature that overrides a method (or implements an interface method), the custom modifier must be the same as the base class or an override stub must be generated.
- Added partial implementation of ThreadMXBean.
- IKVM.Reflection: Bug fix. When writing an assembly that has a .netmodule, the TypeDefId field in the ExportedType in the manifest module should contain a TypeDef token instead of an index.
- IKVM.Reflection: Bug fix. When exporting a nested type (via AssemblyBuilder.__AddTypeForwarder()), we should also set the namespace (in practice it is unlikely for a nested type to have a namespace, but is is possible).
- IKVM.Reflection: Corrected a couple of method parameter names in Assembly.
- IKVM.Reflection: Added Assembly.GetType(string,bool,bool) method.
- IKVM.Reflection: Added support for case-insensitive type and member lookup.
- IKVM.Reflection: Implemented case insensitive lookup in Type.GetInterface().
- IKVM.Reflection: Moved GetEvents(), GetFields(), GetConstructors(), GetNestedTypes() and GetProperties() to a common implementation that fixes a number of bugs.
- IKVM.Reflection: Fixed GetMethods() to properly filter out base class methods that have been overridden.
- IKVM.Reflection: Moved member lookup by name to a common implementation that fixes a number of bugs and adds IgnoreCase support.
- IKVM.Reflection: Added MemberInfo.ReflectedType.
- IKVM.Reflection: Added Binder support for method and property lookup.
- IKVM.Reflection: Bug fix. ParameterBuilder.Position should return the 1-based position passed in to DefineParameter, not the 0-based ParameterInfo.Position.
- IKVM.Reflection: Changed Type.__ContainsMissingType to return true for generic type parameters that have constraints that return true for __ContainsMissingType.
- IKVM.Reflection: Bug fix. It should be possible to import a function pointer type into a ModuleBuilder.
- IKVM.Reflection: Implemented Assembly.ToString().
- IKVM.Reflection: Added [Flags] attribute to ResourceLocation enum.
- IKVM.Reflection: Added support for reading/querying manifest resources that are forwarded to another assembly.
- IKVM.Reflection: Bug fix. Module.GetManifestResourceStream() should return null (instead of throwing FileNotFoundException) for non-existing resource names.
Binaries available here: ikvmbin-7.1.4491.zip