引用C#中另一个应用程序提供的外部.NET DLL

时间:2011-08-02 23:24:16

标签: c# .net reflection

我有一个C#项目,它引用了另一个应用程序附带的DLL(称为外部DLL)。当我构建我的项目时,由于引用,外部DLL会自动添加到我的项目输出中。当我运行我的项目时,它从我的项目文件夹加载外部DLL。

外部DLL所属的另一个应用程序是由另一个团队开发的,并且DLL会定期更新。我不想用我的项目打包他们的DLL。相反,我希望我的项目在执行时加载他们的DLL - 而不是从我项目的文件夹中选择DLL副本。

现在我知道通过反思这是可能的。我知道我可以做一个“Assembly.Load”并选择DLL。但是因为我通过我的代码使用外部DLL中的类型,所以我希望对代码进行静态类型检查。

这就是我想要的:

  1. 能够通过引用外部DLL来编译我的项目,从而获得静态类型检查。
  2. 当项目运行时,外部DLL从另一个应用程序的文件夹中获取,而不是我项目输出文件夹中的DLL副本。
  3. 有什么方法可以解决这个问题吗?在添加引用和使用反射之间是否存在一些中间立场?

1 个答案:

答案 0 :(得分:5)

您问题的最直接解决方案是更改参考的属性。有一个名为Copy Local的设置。将其设置为false,它将停止将DLL复制到项目的输出。您可以通过展开解决方案中的references文件夹,右键单击相关引用,然后单击属性以打开属性窗格来访问引用的属性。

Visual Studio在构建时将DLL复制到项目的输出文件夹这一事实对于.Net Framework在运行时并不重要。重要的是,您引用的程序集在其搜索的路径或全局程序集缓存中可供框架使用。

相关问题