问题标签 [external-assemblies]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3463 浏览

c# - 在 C# 中序列化和反序列化外部程序集

我写了一个插件系统,我想保存/加载它们的属性,这样如果程序重新启动,它们就可以继续工作。我使用二进制序列化。问题是它们可以序列化但不能反序列化。在反序列化期间抛出“无法找到程序集”异常。如何恢复序列化数据?

0 投票
4 回答
1040 浏览

c# - .NET 程序集引用 101

我在程序集 A 中有以下类。程序集引用了 StructureMap 2.6.1。

我在完全不同的程序集 (B) 中引用程序集 A,并且在调用此行时出现以下运行时错误:

运行时错误是:

FileNotFoundException:无法加载文件或程序集“StructureMap,Version=2.6.1.0,Culture=neutral,PublicKeyToken=e60ad81abae3c223”或其依赖项之一。该系统找不到指定的文件。

我经常不得不将 StructureMap.dll 复制到程序集 B 的 bin 目录中。这非常烦人。关于如何解决这个问题的任何建议?有人知道关于 AssemblyB 何时需要 AssemblyA 引用的程序集的一般规则吗?

谢谢!


感谢您的快速回复!我想过简单地添加 StructureMap 作为参考。然而,我在设计中的目标是从消费者那里抽象出底层实现。换句话说,Assembly B 将不知道 StructureMap 最终被使用的事实。另外,如果我是 GAC StructureMap,那么我会遇到部署问题吗?如果我将站点部署到其全局缓存中没有 StructureMap 的主机上,那么我将回到原点。我很好奇考虑到这个程序集引用问题,如何实现真正的抽象。

0 投票
1 回答
180 浏览

c# - 如何处理我的代码未引用但需要在 bin 中的依赖 DLL?

我正在为第 3 部分应用程序开发一系列插件,供应商向我们提供了他们所有的插件程序集以及一些帮助程序程序集,用于使用他们的系统。

我们的代码通常会引用这些辅助程序集,但它们的插件程序集仍然需要复制到外部的 bin/debug 或 bin/release 目录。通常我会将其作为主项目的构建后事件,但由于该项目是具有自己依赖关系的单个项目的集合,我不知道该怎么做。

在 Visual Studio 中处理这种情况有哪些建议(或最佳实践)?

0 投票
1 回答
62 浏览

external-assemblies - DLL 适用于基于 Web 的应用程序,但不适用于窗口应用程序

我将一些最常用的函数和扩展放入一个 DLL 中,这样我就可以将 DLL 包含到任何项目中。这适用于基于 Web 的项目,但会在独立应用程序上引发错误。我对程序集名称执行 Imports。我可以看到函数和方法,但是当我尝试运行时,我得到:

{Function Name} 未声明。由于其保护级别,它可能无法访问。

有什么想法吗?

我想知道是否是因为在 dll 中我正在对一些字符串和一些 system.web.ui.webcontrols 对象进行扩展。我不认为这会是一个问题,因为在 dll 中我正在执行 Imports System.Web.UI.WebControls。

0 投票
1 回答
191 浏览

visual-studio-2010 - 如何为引用的程序集指定 Visual Studio 生成输出位置?

我有一个包含 .NET 3.5 和 4.0 项目的混合解决方案。由于外部依赖关系,3.5 项目无法升级。

该解决方案使用简单的插件机制,并且我已将所有项目的输出路径设置为解决方案文件夹中的公共 bin 文件夹,以便在调试时可以发现和加载插件程序集。

我有引用第 3 方程序集的 .NET 3.5 项目和引用同一程序集的 4.0 版本的 .NET 4.0 项目,该程序集的文件名与 3.5 版本相同。当我构建时,第 3 方程序集的一个版本会覆盖另一个版本。

我想让这些依赖项输出到不同的子文件夹,这样我就可以在配置中设置探测私有路径,但我看不到如何在构建过程中执行此操作。

0 投票
2 回答
313 浏览

asp.net-mvc - 将 Ninject 与外部程序集中的 MVC3 控制器一起使用

我在使用 MVC contrib 的可移植区域的外部程序集中有 MVC3 控制器,但我在让 Ninject 注入构造函数依赖项时遇到问题。

找到了控制器,但出现“没有为此对象定义无参数构造函数”的异常。我可以看到 ninject 的控制器工厂正在调用堆栈中被调用,但对于外部程序集,它只是没有通过我的数据库会话。

为什么会这样?

0 投票
2 回答
1050 浏览

asp.net-mvc - mvc3 razor 页面找不到命名空间

我在那里阅读了很多类似的问题,但我无法解决我的特定问题......在我的 MVC3 项目中,我使用了一个外部库。我可以在任何地方使用这个库,但不能在我的剃刀视图中使用。
因此,在阅读了一些关于 SO 的类似问题后,我发现我应该将此库注册到该<system.web><compilation><assemblies>部分。尝试这样做,我最终得到了像这样的 web.config 的一部分

但仍然不起作用......或者更准确地说,这在运行时破坏了所有项目。如果我启动项目,它会崩溃,告诉我Impossibile to load assembly 'MailBee.Net.dll, Version=7.1.4.348, Culture=neutral, PublicKeyToken=cd85b70fb26f9fc1' or one of its dependency
dll 肯定在 web 应用程序的 /bin 文件夹中,并且删除 web.config 文件中的声明,我会在所有项目中使用它,但在视图页面中。任何想法?

0 投票
2 回答
194 浏览

c# - WPF 中的链引用程序集

今天我想知道你如何在 C# WPF 中配置你的项目,它引用了链中的其他程序集。通过“链中”,我的意思是这样的:

  • 我们有引用程序集插件的应用程序
  • 插件程序集是指插件使用的资源所在的资源,例如。图片
  • 主应用程序不以任何方式引用资源。

下图说明了我刚才所说的:
链参考装配体

问题是资源没有复制到应用程序的bin文件夹,导致插件(图像上的Ctrl)资源查找失败。

解决方法

有一些解决方法,只需将资源包含到主应用程序的引用或使用构建后步骤并在该步骤中手动复制所需的文件。

结论

最后,我想问一下你是如何处理这个问题的。除了我在解决方法部分提到的解决方案之外,还有其他解决方案吗?我在项目的配置中遗漏了什么吗?

0 投票
1 回答
315 浏览

.net - 从 CodeBase 加载的 .NET 程序集在哪里?

我正在使用应用程序配置中的 < codebase > 元素从外部位置加载 dll。我想知道程序集在哪里实例化?

我让 <codebase> 指向我的本地驱动器(在 appbase 之外)以及一个网络共享驱动器,并运行 fuslogvw 和进程监视器以​​查看发生了什么。但我无法说出引擎盖下到底发生了什么。

下面的链接解释了它转到特定于用户的应用程序缓存。 http://msdn.microsoft.com/en-us/magazine/cc164080.aspx

下面的链接解释了它进入一个特殊的 GAC 缓存。 http://www.developer.am/c-net-platform/?page=understanding-the-codebase-element

总的来说,我理解它,因为它应该被加载到某个缓存位置,但我无法确认。请帮忙。我想知道加载和存储 ddl 的确切位置。

谢谢

0 投票
1 回答
944 浏览

c# - 使用 Ninject 将 IJob 从外部程序集注入 Quartz.net 调度程序

我正在尝试创建一个可以使用 Ninject 加载外部程序集并使用 Quartz.net 按计划运行它们的应用程序。

我已经成功地实现了 Quartz.net 来注入自身,并在同一个程序集中运行基于 IJob 实现的类的作业。这很好用。

我想更进一步,创建一个插件架构。

我创建了一个所有插件都会使用的通用接口,IPlugin,这个接口也实现了 IJob。这在主应用程序中被编译和引用,每个插件都实现它。


然后我有一个实现 IPlugin 的测试插件。非常简单,它只是输出一个绿色的时间戳。


在我添加 Quartz.net 框架之前,我会像这样加载和执行插件。插件将加载,运行一次,应用程序将按预期结束。


现在我需要插件按计划运行,但它仍然必须通过 Ninject 加载,并且主应用程序应该与类型无关,它应该只知道它是一个 IJob 并且能够按照在某些配置中定义的计划运行它. 这是我遇到的麻烦。

我有我的 NinjectJobFactory


我的工厂提供商和调度程序提供商。


以及外部 XML 文件中的一些配置。


基本上我不知道该怎么做。我已经根据我在谷歌/这里找到的东西尝试了一些东西,但没有任何帮助。任何建议将不胜感激。