Exemplo n.º 1
0
        public static short Initialize(void *xlAddInExportInfoAddress, void *hModuleXll, void *pPathXLL)
        {
            string pathXll = Marshal.PtrToStringUni((IntPtr)pPathXLL);

            AssemblyManager.Initialize((IntPtr)hModuleXll, pathXll);
            _alc = new ExcelDnaAssemblyLoadContext(pathXll);

            var initOK = XlAddInInitialize((IntPtr)xlAddInExportInfoAddress, (IntPtr)hModuleXll, pathXll, AssemblyManager.GetResourceBytes, Logger.SetIntegrationTraceSource);

            return(initOK ? (short)1 : (short)0);
        }
Exemplo n.º 2
0
        internal static void Initialize(IntPtr hModule, string pathXll
#if NETCOREAPP
                                        , ExcelDnaAssemblyLoadContext alc
#endif
                                        )
        {
            AssemblyManager.hModule = hModule;
            AssemblyManager.pathXll = pathXll;
#if NETCOREAPP
            AssemblyManager.alc = alc;
#endif
            loadedAssemblies.Add(Assembly.GetExecutingAssembly().FullName, Assembly.GetExecutingAssembly());
        }
Exemplo n.º 3
0
        public static short Initialize(void* xlAddInExportInfoAddress, void* hModuleXll, void* pPathXLL)
        {
            string pathXll = Marshal.PtrToStringUni((IntPtr)pPathXLL);
            _alc = new ExcelDnaAssemblyLoadContext(pathXll);
            AssemblyManager.Initialize((IntPtr)hModuleXll, pathXll, _alc);
            var loaderAssembly = _alc.LoadFromAssemblyName(new AssemblyName("ExcelDna.Loader"));
            var xlAddInType = loaderAssembly.GetType("ExcelDna.Loader.XlAddIn");
            var initOK = (bool)xlAddInType.InvokeMember("Initialize", BindingFlags.Public | BindingFlags.Static | BindingFlags.InvokeMethod, null, null,
                new object[] { (IntPtr)xlAddInExportInfoAddress, (IntPtr)hModuleXll, pathXll,
                    (Func<string, int, byte[]>)AssemblyManager.GetResourceBytes,
                    (Func<string, Assembly>)_alc.LoadFromAssemblyPath,
                    (Func<byte[], byte[], Assembly>)_alc.LoadFromAssemblyBytes,
                    (Action<TraceSource>)Logger.SetIntegrationTraceSource });

            return initOK ? (short)1 : (short)0;
            }