C# - 在exe中嵌入dll - FileNotFoundException

时间:2014-05-31 14:53:42

标签: c# dll embed exe filenotfoundexception

我只想要一个文件启动我的程序,为什么我想在我的exe中嵌入我的dll。

我需要2个dll才能正常工作。

这是我的programm.cs:

using System;
using System.Linq;
using System.Reflection;
using System.Windows.Forms;

namespace _4_Gewinnt___Client {
    static class Program {
        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        [STAThread]
        static void Main() {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
            Application.Run(new Client());
        }

        static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) {
            string assemblyName = args.Name.Split(',').First();
            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("_4_Gewinnt___Client." + assemblyName + ".dll")) {
                byte[] assemblyData = new byte[stream.Length];
                stream.Read(assemblyData, 0, assemblyData.Length);
                return Assembly.Load(assemblyData);
            }
        }
    }
}

但是如果我运行我的应用程序,我会得到一个FileNotFoundException。

BTW,构建操作设置为“嵌入资源”。并且设置了引用并且“Local Copy”为false。 如果我将“Local Copy”设置为“true”,一切正常,但我不想要任何其他文件(.exe除外)。

我希望你能理解一切,我的英语不是最好的:)。

0 个答案:

没有答案