All Versions
14
Latest Version
Avg Release Cycle
94 days
Latest Release
1030 days ago

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, 2019

    LegacyWrapper 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, 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.

    ๐Ÿ‘€ See this blog post for details.

  • 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.