我有一个C#项目,它引用了另一个应用程序附带的DLL(称为外部DLL)。当我构建我的项目时,由于引用,外部DLL会自动添加到我的项目输出中。当我运行我的项目时,它从我的项目文件夹加载外部DLL。
外部DLL所属的另一个应用程序是由另一个团队开发的,并且DLL会定期更新。我不想用我的项目打包他们的DLL。相反,我希望我的项目在执行时加载他们的DLL - 而不是从我项目的文件夹中选择DLL副本。
现在我知道通过反思这是可能的。我知道我可以做一个“Assembly.Load”并选择DLL。但是因为我通过我的代码使用外部DLL中的类型,所以我希望对代码进行静态类型检查。
这就是我想要的:
有什么方法可以解决这个问题吗?在添加引用和使用反射之间是否存在一些中间立场?
答案 0 :(得分:5)
您问题的最直接解决方案是更改参考的属性。有一个名为Copy Local
的设置。将其设置为false,它将停止将DLL复制到项目的输出。您可以通过展开解决方案中的references文件夹,右键单击相关引用,然后单击属性以打开属性窗格来访问引用的属性。
Visual Studio在构建时将DLL复制到项目的输出文件夹这一事实对于.Net Framework在运行时并不重要。重要的是,您引用的程序集在其搜索的路径或全局程序集缓存中可供框架使用。