C#4.0使用.NET合并.dll程序集

我决定让我的 other question死了,因为我想到了一个新想法,使用 this page写的Jeffrey Richter方法将.dll库合并到我的应用程序中.所以我将.dll文件添加为嵌入式资源,并将其添加为参考.然后在Program.cs中(我不知道他发布的代码应该去哪里),我添加了这个:

...
    [STAThread]
    static void Main()
    {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            string[] args = Environment.GetCommandLineArgs();
            if (args.Length > 1)
                _in = args[1];
            SingleInstanceController controller = new SingleInstanceController();
            controller.Run(args);

            AppDomain.CurrentDomain.AssemblyResolve += (sender, argsx) =>
{
String resourceName = "AssemblyLoadingAndReflection." +
   new AssemblyName(argsx.Name).Name + ".dll";
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
    Byte[] assemblyData = new Byte[stream.Length];
    stream.Read(assemblyData, 0, assemblyData.Length);
    return Assembly.Load(assemblyData);
    }
}
        ;

我应该将resourceName更改为其他内容吗?我是否正确添加(在正确的位置)?

现在问题是,它仍然无法找到并加载程序集,我不确定我做错了什么.任何帮助,将不胜感激.

在AppDomain尝试解析引用(即入口点和第一行)之前挂钩到AssemblyResolve事件.

嵌入的资源名称以应用程序名称开头,后跟资源名称.例如:ConsoleApplication.Test.dll.

相关文章
相关标签/搜索