【问题标题】:C# Loading dll's from PrivateBinC# 从 PrivateBin 加载 dll
【发布时间】:2013-07-02 15:56:09
【问题描述】:

我有一个 asp.net 网站项目。我需要使用几个无法复制到 bin 目录中的自定义 dll。

我尝试创建一个自定义 bin 文件夹并将 Global.asax 中的 Application_Start PrivateBinPath 设置为该目录

void Application_Start(对象发送者,EventArgs e) { AppDomain.CurrentDomain.SetupInformation.PrivateBinPath = Server.MapPath("~/my_DLLS"); }

然后在我的 .cs 文件中使用 using 语句来包含该 dll,但我得到了 编译器错误消息:CS0246:找不到类型或命名空间名称“DLLNAME”(您是否缺少 using 指令或程序集引用?)

我也尝试在 web.config 中添加 assemblyBinding

汇编绑定> 运行时>

我觉得我错过了什么。

【问题讨论】:

  • 尝试将整个项目移动到易于访问的路径,例如 C:\Test,不要有空格或其他任何内容,然后重试。
  • 项目在服务器上。路径不包含空格。我可以从 bin 目录中引用所有 dll,但不能从我的自定义目录中引用

标签: asp.net bin


【解决方案1】:

一些想法

  1. 确保您的私有 bin 路径位于应用程序根目录下(您的代码表明它是 - 但只需确认)

  2. 私有 bin dll 是否具有私有 bin 中不存在的任何依赖项

  3. 您可以使用fusion log viewer 检查应用程序中的 dll 绑定。那应该表明是否有绑定

  4. 检查私有 bin 文件夹的权限。用锤子敲击它,并授予每个人对该文件夹的完全权限。看看会不会出现这种情况

  5. 作为临时措施 - 将私人 bin 文件夹作为子目录放在您的 bin 文件夹下。这现在行得通吗?如果它确实有效,这可能是一个永久的解决方案。可能不适合你

这是关于类似问题的一个很好的答案 - 有一个很好的图表,您可能会觉得有帮助

How do I reference assemblies outside the bin folder in an ASP.net application?

当然祝你好运

【讨论】:

  • 我的自定义 bin 目录与 bin 处于同一级别,与 bin 具有完全相同的权限。其中一个 dll 是 PdfSharp.dll 在我收到这一行中的错误 PdfSharp.PdfDocument document = new PdfSharp.PdfDocument();
  • erm - 如果您在该行中遇到错误,那么它肯定正在加载 PdfSharp.dll。所以它正在寻找你的私人垃圾箱。可能是依赖。您是否尝试过融合日志查看器。
  • 刚刚做了。这看起来不错的样子。如果我将 dll 从我的自定义文件夹移回 bin 一切正常。我把它移回来,它没有。我正在使用其他 dll 和相同的错误进行修复。编译器错误消息:CS0246:找不到类型或命名空间名称“FreeTextBoxControls”(是否缺少 using 指令或程序集引用?) FreeTextBoxControls.FreeTextBox topicEditor = new FreeTextBoxControls.FreeTextBox();
  • 我能够循环遍历每个程序集,并且确实看到循环时加载的那个尝试我看到 dll 的所有方法的类型,但程序集 FreeTextBox,版本 = 3.3.1.12354,文化=neutral, PublicKeyToken=5962a4e684a48b87 Namespace = Name GetTypes FreeTextBoxControls=ToolbarListItem GetTypes FreeTextBoxControls=AssemblyResourceHandler GetTypes FreeTextBoxControls=ImageGallery 但是命名空间 FreeTextBoxControls 没有给我任何方法
猜你喜欢
  • 2011-09-06
  • 1970-01-01
  • 2010-09-30
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
  • 2020-02-25
  • 2011-07-24
  • 1970-01-01
相关资源
最近更新 更多