Changelog History
Page 1
-
v3.0.1.0 Changes
February 04, 2019- โ Add a check that explicitly tests if the provided interface is public. This is necessary for generating dynamic proxies with Castle.
-
v3.0.0.0 Changes
February 03, 2019LegacyWrapper 3.0 is a major rewrite and not backwards compatible to prior versions.
๐ See this blog post for details.
The old
Invoke<TDelegate>()
method has been replaced by a much simpler and more type-safe pattern:// Define a proxy interface with matching method names and signatures// The interface must be derived from IDisposable![LegacyDllImport("User32.dll")]public interface IUser32Dll : IDisposable{ [LegacyDllMethod(CallingConvention = CallingConvention.Winapi)] int GetSystemMetrics(int nIndex); }// Create configurationIWrapperConfig configuration = WrapperConfigBuilder.Create() .TargetArchitecture(TargetArchitecture.X86) .Build();// Create new Wrapper client providing the proxy interface// Remember to ensure a call to the Dispose()-Method!using (var client = WrapperProxyFactory<IUser32Dll>.GetInstance(configuration)) { // Make calls - it's that simple!int x = client.GetSystemMetrics(0); int y = client.GetSystemMetrics(1); }
Therefore, there is no longer the need to:
- Create a
delegate
- Cast result values
- Pass function parameters as array of
object
- Supply the method name as magic string
Other things that changed:
- ๐ Documentation on classes and methods has been improved
- โ There are more unit tests now (especially edge cases)
-
v2.1 Changes
August 20, 2017- It is now possible to load 64bit libraries in a 32bit process:
using (var client = new WrapperClient(TestDllPath, TargetArchitecture.Amd64)) { result = (int)client.Invoke<TestStdCallDelegate>("TestStdCall", new object[] { input }); }
- Please note that this will only work if the OS is 64 bit.
- ๐ As the second optional parameter defaults to X86, this release should be backwards compatible.
-
v2.1.0.0 Changes
August 20, 2017It is now possible to load 64bit libraries in a 32bit process:
using (var client = new WrapperClient(TestDllPath, TargetArchitecture.Amd64)) { result = (int)client.Invoke<TestStdCallDelegate>("TestStdCall", new object[] { input }); }
Please note that this will only work if the OS is 64 bit.
๐ As the second optional parameter defaults to X86, this release should be backwards compatible.
-
v2.0.1 Changes
February 17, 2017- ๐ This is a minor release that updates some XML docs.
-
v2.0.1.0 Changes
February 17, 2017๐ This is a minor release that updates some XML docs.
-
v2.0 Changes
February 17, 2017- ๐ This version 2.0 of LegacyWrapper adds a major performance improvement. The wrapper executable now loads the requested dll only once until disposed.
- LegacyWrapper 2.0 is not backwards compatible.
-
v2.0.0.0 Changes
February 17, 2017๐ This version 2.0 of LegacyWrapper adds a major performance improvement.
The wrapper executable now loads the requested dll only once until disposed.
LegacyWrapper 2.0 is not backwards compatible.
-
v1.1.0 Changes
February 17, 2017- โ Add support for ref parameters (values in passed parameters array will be updated)
- ๐ Improve error handling (wrapper exe will not crash randomly any more)
-
v1.1.0.0 Changes
February 17, 2017- โ Add support for ref parameters (values in passed parameters array will be updated)
- ๐ Improve error handling (wrapper exe will not crash randomly any more)
๐ If you notice any errors, feel free to create an issue in this repository.