问题标签 [assembly-resolution]

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 回答
875 浏览

c# - 为什么在 IIS CGI 程序中出现程序集绑定失败

我有一个 C# 程序在 XP Pro SP3 上的 IIS 中作为 CGI 应用程序运行。在我引用库程序集类并在程序代码中使用它之前,它运行良好。如果我手动运行 CGI 程序,它会加载并执行。但是,当它由 IIS 运行时,尽管引用的程序集与父可执行文件位于同一目录中,但它无法绑定。这是我得到的绑定日志:

Appbase 是正确的(尽管 URI 中的“?”是什么????也许这是一个提示)。程序集 voevent.dll 绝对与 MsgChkCGI.exe 位于同一目录(Appbase!)中。如果我只是双击 exe,它会正确启动(并且由于缺少 CGI 环境变量而出现错误,但这是意料之中的)。

有谁知道发生了什么?

0 投票
2 回答
1034 浏览

nhibernate - NHibernate 2.1.1.4000 的 NHibernate 二级缓存提供程序

我正在使用针对 NHibernate 2.1.1.4000 构建的 s#arp,但是我想使用 NHibernate.Caches.SysCache 作为我的二级缓存。然而,Nhibernate contrib 缓存是针对 NHibernate 2.1.2.4000 构建的,这显然给了我一个问题。

谁能指出我可以下载针对 NHibernate 2.1.1.4000 构建的 NHibernate.Caches.SysCache.dll 的 URL

或者是否有另一个易于实现并且针对 NHibernate 2.1.1.4000 构建的二级缓存提供程序

谢谢

0 投票
4 回答
1931 浏览

.net - NHibernate 和 Windsor 程序集冲突

我在让 Hibernate 和 Windsor 一起工作时遇到问题。我的设置详细信息如下

我有两个项目
-DomainModel
-MVCApp

我已经下载了 NHibernate 2.1.2 和 Windsor 2.1.1
我从 NHibernate 下载的 required_Bins 文件夹中添加了对 DomainModel 的以下引用 -
Antlr3、Iese、log4net 和 NHibernate 2.1.2.4
我还添加了引用在 DomainModel 到 Lazy_loading 的文件,包括

Castle.Core - 1.1.0.0
Castle.DynamicProxy2 - 2.1.0.0
NHibernate.ByteCode.Castle - 2.1.2.4

MVCApp 有以下参考:

Castle.Core - 1.2.0.6623
Castle.Microkernel - 2.1.0.6655
Castle.Windsor - 2.1。 0.6655
Castle.DynamicProxy2 - 2.2.0.6628

运行应用程序时出现错误:

无法加载文件或程序集'Castle.DynamicProxy2,版本 = 2.1.0.0,
调用程序集:NHibernate.ByteCode.Castle,版本 = 2.1.2.4000

MVC bin 文件夹具有 Castle.DynamicProxy2 - 2.2.0.6628 版本,因此请求旧版本后出现错误。

我该如何让它发挥作用?我遗漏了什么或包含不正确?请帮忙..谢谢。

0 投票
3 回答
1344 浏览

c# - 如何在没有 ILMerge 的情况下将程序集嵌入到控制台应用程序中?

这里有很多关于这个的帖子,我正在使用另一个 SO 帖子中的这段代码,并在我的 Main() 方法中放置一个委托分配。其他帖子都没有直接回答我的问题。

我已经将我的第三方程序集作为资源嵌入,但是当我启动应用程序时:

  • 我得到一个带有 FileNotFoundException 内部的 TypeInitializationException。它试图在文件系统上找到程序集并失败。
  • 它永远不会到达 Main 方法,在该方法中为 AssemblyResolve 分配了事件处理程序

我的 Resources.resx 中嵌入了两个程序集引用,一个是第三方工具(命令行解析器),另一个是应用程序所在的库文件。

也许这对于控制台应用程序是不可能的?似乎不太可能,但我看不到解决方法。

回复:ILMerge 等:我想在不涉及任何工具的情况下完全用代码完成这项工作。原因:我不希望存储库中的源代码需要其他团队成员安装他们可能还没有的工具。如果这不可能,那么 ILMerge 看起来是下一个最佳选择。

0 投票
2 回答
3760 浏览

asp.net - 一段时间后的程序集 FileLoadException(访问被拒绝)

我有一个 Web 应用程序可以正常工作一段时间(几天),然后在实例化引用外部 dll 的类时开始抛出 FileLoadException。

  • 我没有使用任何 Assembly 静态方法显式加载程序集。我只是在实例化一个类,它本身从引用的库中实例化一个类。
  • 我运行了 Process Monitor 并只是监视了应用程序路径。我只得到发生错误的源代码文件的“PATH NOT FOUND”结果(在调试模式下编译,所以我假设这只是 .NET 的一部分,试图显示在转储堆栈跟踪时发生错误的行)
  • 这是在内部的专用服务器上运行的。该应用程序在 .NET 3.5 应用程序池以及使用相同引用的 dll 构建的另一个网站上运行。另一个网站有更多的流量,但从未收到此错误。
  • 该应用程序在 3 个 Web 服务器之间进行负载平衡,并且所有 3 个 Web 服务器都在某个时候遇到了这个问题。

我在其中一台 Web 服务器上打开了程序集绑定日志记录。这是堆栈跟踪的样子:

我对调试文件加载异常不是很熟悉,所以非常感谢任何帮助(我还能做些什么来调试,等等)。

谢谢。

0 投票
3 回答
667 浏览

c# - AssemblyName.ReferenceMatchesDefinition 是如何工作的?

给定以下代码:

为什么这两项检查都打印“True”?我原以为 AssemblyName.ReferenceMatchesDefinition 应该考虑程序集名称的版本、文化和公钥标记属性的差异,不是吗?

如果没有,ReferenceMatchesDefinition 做了哪些简单名称的比较没有做的事情?

0 投票
2 回答
493 浏览

.net - .NET 程序集加载问题

我正在维护我们的应用程序的构建过程,其中包括一个 ASP.Net 应用程序、两个不同的 Win32 服务和其他与系统管理员相关的应用程序。

我希望在调试和部署时都使用以下配置。

问题是 app.config 中的程序集探测 privatePath 不支持应用程序根目录之外的相对目录。即:不能使用 ../libraries。非常令人沮丧...

如果我强命名我们的程序集,我可以使用似乎支持绝对路径的 codeBase 配置元素,但您需要单独指定每个程序集。

我还尝试挂接到 AppDomain.AssemblyResolve 事件,但在我什至可以在 Main() 中注册事件处理程序之前,我从 .Net Fusion 获得了 FileNotFoundException。

我不喜欢在 GAC 中注册程序集的想法。部署/升级应用程序时太麻烦了。

如果没有指定每个所需程序集的路径,是否还有其他方法可以做到这一点?

0 投票
2 回答
29 浏览

.net - 处理插件中定义的不再可用的类型

我正在开发一个允许用户维护和保存“项目”的 .NET 框架应用程序。一个项目可以由其类型在框架本身的程序集中和/或第三方程序集中定义的组件组成,这些组件将通过尚未构建的插件架构提供给框架。保存项目时,只需将其二进制序列化为文件。

项目是可移植的,因此多个用户可以将同一个项目加载到他们自己的框架实例中(就像不同的用户可以在他们自己的本地 MSWord 副本中打开同一个 MSWord 文档一样)。更重要的是,一个用户的框架可用的插件可能对另一个用户的框架不可用。

我需要某种方法来确保当用户尝试打开(即反序列化)包含无法找到定义程序集的类型的项目时(由于框架版本不兼容或缺少插件),该项目仍然打开,但有问题的类型以某种方式被替换或省略。麻烦的是,我迄今为止所做的研究甚至没有暗示合适的方法。任何想法将不胜感激,谢谢。

0 投票
2 回答
274 浏览

.net - 添加程序集引用也需要引用基础程序集

我创建了一个具有子类的程序集,该子类派生自另一个程序集中定义的父类。

当我添加对子项的引用时,Visula 工作室还要求将引用添加到父项。

为什么会这样,我怎样才能在不丢失任何功能的情况下防止它?

0 投票
4 回答
2884 浏览

asp.net-mvc - 帮助 System.Web.Compilation.BuildManager 在非引用程序集中查找类型

我正在尝试编写一个插件系统,可以将程序集放在 ASP.NET 不知道的文件夹中。这个插件系统适用于基于 ASP.NET MVC 的程序集,但对于老式的 WebForm 程序集(其中的.aspx文件InheritsSystem.Web.UI.Page派生类)System.Web.Compilation.BuildManager负责将.aspx文件编译成动态程序集。

我的问题是BuildManager我对插件文件夹中的程序集一无所知,而且我似乎完全无能为力。如果我做:

它抛出。如果我首先得到参考Type然后尝试:

即使我现在已经传入了type编译.aspx文件所需的具体内容,它仍然会抛出。我能做些什么来帮助BuildManager找到编译.aspx文件所需的类型吗?

更新:BuildManager.GetType()通过研究实际做 了什么,我更进了一步。通过指定定义类型的程序集(例如“PluginAssembly.DefinedType,PluginAssembly”),然后将自己挂钩到System.AppDomain.CurrentDomain.AssemblyResolve事件中,我现在可以找到插件程序集并将其返回,以便 BuildManager 可以成功构造该类型。这使得以下工作具有出色的色彩:

但是,这仍然失败:

即使该.aspx文件现在在其Inherits指令中具有相同的程序集引用:

我收到的错误是:

“编译器错误消息:CS0234:名称空间“PluginAssembly”中不存在类型或名称空间名称“DefinedType”(您是否缺少程序集引用?)”,源输出如下:

似乎内部发生的事情BuildManager.CreateInstanceFromVirtualPath()涉及到System.Web.Util.IWebObjectFactory它可能是由于找不到我的程序集而引发此异常的原因。我可以毫无问题地实现这个接口,但是如果我不能告诉它有什么帮助BuildManager呢?