[STAThread]
        static void Main()
        {
            AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);
            ApplicationSetConfig();
            ApplicationStart();
        }
        
        private static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
        {
            Assembly thisAssembly = Assembly.GetExecutingAssembly();
                string resourceName = null;
                string fileName = args.Name.Substring(0, args.Name.IndexOf(',')) + ".dll";
                foreach (string name in thisAssembly.GetManifestResourceNames())
                {
                    if (name.EndsWith(fileName))
                    {
                        resourceName = name;
                    }
                }

                if (resourceName != null)
                {
                    using (Stream stream = thisAssembly.GetManifestResourceStream(resourceName))
                    {
                        if (stream != null)
                        {
                            byte[] assembly = new byte[stream.Length];
                            stream.Read(assembly, 0, assembly.Length);
                            Console.WriteLine("Dll file load : " + resourceName);
                            return Assembly.Load(assembly);
                        }
                    }
                }
                return null;

        }

 

Ps: Dll 버전이 변경시 주의해서 변경해야함.

 

참조 링크 : http://trudy.kr/146

 

[C#] dll을 포함한 단일 exe배포 방법

일반적으로 프로그램을 배포시 exe파일과 Applica…

trudy.kr

 

SMALL

+ Recent posts