C# “当”时,我如何引用DLL;添加为链接";在项目中?

C# “当”时,我如何引用DLL;添加为链接";在项目中?,c#,.net,visual-studio-2010,assemblies,C#,.net,Visual Studio 2010,Assemblies,我在项目树中有两个dll文件(不是引用)。它们作为链接添加,它们是解决方案中其他项目的程序集。我正在尝试将它们的构建操作设置为嵌入式资源,以便将它们导入到.exe文件。我无法使用语句编写,因此无法在当前项目中引用它们。如何做到这一点 您需要添加对程序集的硬引用,并将其副本本地设置为False,然后在调用程序集之前将程序集从嵌入式资源提取到应用程序目录。您不能引用所需的链接(快捷方式) 关键点(在本例中)和 EmbeddedReference应用程序硬引用EmbeddedReference.dl

我在项目树中有两个dll文件(不是引用)。它们作为链接添加,它们是解决方案中其他项目的程序集。我正在尝试将它们的构建操作设置为嵌入式资源,以便将它们导入到.exe文件。我无法使用语句编写,因此无法在当前项目中引用它们。如何做到这一点


您需要添加对程序集的硬引用,并将其副本本地设置为False,然后在调用程序集之前将程序集从嵌入式资源提取到应用程序目录。您不能引用所需的链接(快捷方式)

关键点(在本例中)和

  • EmbeddedReference应用程序硬引用EmbeddedReference.dll
  • EmbeddedReference引用属性Copy Local设置为False
  • 链接程序集(添加为链接)设置为嵌入资源
下面是一个工作示例。(EmbeddedReferenceApplication.exe |控制台应用程序)

在EmbeddedReference.dll中

using System;
using System.Collections.Generic;
using System.Text;

namespace EmbeddedReference {
    public static class MessageHelper {
        public static void ShowMessage() {
            Console.WriteLine("Hello World!");
        }
    }
}

我甚至不能在没有复制的情况下运行它。你能举个例子吗?我需要以某种方式动态获取dll。每次都必须进行编译。您必须在对程序集进行任何代码调用之前提取程序集,执行此操作的最佳位置是在运行任何代码之前在Program.cs类中。否则,当程序运行一行代码进行引用该程序集的调用时,该程序集将无法解析,你的应用程序将崩溃。你能提供一个例子吗?我将用Visual Studio解决方案在上面写一篇博文供下载,并在我完成后将文章发回这里。你从作为链接添加的同一位置添加对实际DLL本身的硬引用。您只是将Copy Local设置为false,这样它就不会在磁盘上进行物理复制。将添加为链接副本设置为嵌入式资源将确保它们被编译为输出二进制文件。如果您还没有下载示例项目,请看一下博客,它是一个功能齐全的示例,以防有人尝试做同样的事情:我以另一种方式使其工作。看看这个
using System;
using System.Collections.Generic;
using System.Text;

namespace EmbeddedReference {
    public static class MessageHelper {
        public static void ShowMessage() {
            Console.WriteLine("Hello World!");
        }
    }
}