【问题标题】:Reference a dll inside a folder within the bin folder在 bin 文件夹内的文件夹内引用 dll
【发布时间】:2017-03-27 15:33:08
【问题描述】:

在我的 Bin 文件夹中,我创建了另一个名为“Template”(Bin > Template)的文件夹。在 Template 文件夹中,我有一组 dll,我想从一个类中调用它们;喜欢...using Bin.Template.Example.ClassName;有可能做到这一点吗?

【问题讨论】:

  • 你试过了吗?结果如何?
  • 右键项目,添加引用,浏览。
  • 这不是程序集名称和命名空间的工作方式。添加对程序集的引用,然后添加using 指令以在代码文件中导入命名空间。
  • 正如@Chris Pickford 建议的那样,我只需要以传统方式添加引用;我的问题是我直接将dll复制并粘贴到文件夹中。感谢大家的回复。

标签: c# asp.net visual-studio-2013 web-site-project


【解决方案1】:

是的,您可以使用Assembly.LoadFile 加载外部程序集。

        var x = Assembly.LoadFile("myFile.dll");
        var myObject = x.CreateInstance("MyClass");

但是,您将没有对结果对象的强类型访问。

考虑改用依赖注入,您将能够在其中加载程序集并了解类型。

【讨论】:

  • 使用界面应该会给你一些强类型:IFace myObject = (IFace)x.CreateInstance(..)?
  • 是的,前提是源程序集和目标程序集共享它们都引用的公共接口程序集。
【解决方案2】:

要使用文件系统中的外部 DLL,您需要在项目级别添加引用。在你的项目下右键References,选择Add Reference...

然后点击Browse按钮,找到DLL,按Ok

在您的类文件中,将using <dll.name.space>; 添加到顶部。

【讨论】:

  • 我仔细检查了我的代码,我打算做的,似乎不是那样工作...在 Bin 文件夹中,我创建了一个 Template 文件夹并以常规方式添加了引用(Bin > Template > .dll),但系统所做的只是将dll的@bin的根目录,而不是模板文件夹中...
  • 您不应该手动将东西放入 bin 文件夹中,考虑到它的易失性,因为它的内容应该由您的构建过程管理。如果您确实需要将这些引用的 DLL 放在子文件夹中,请将其编写为构建后事件的脚本,但请确保将子文件夹添加到 PATH。
猜你喜欢
  • 1970-01-01
  • 2019-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多