问题标签 [assembly-loading]

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 投票
0 回答
28 浏览

.net - 确定加载 .NET 程序集/模块的原因

关于调试 .NET 程序集加载失败的文章已经写了很多。在这种情况下,程序集已成功加载。我想知道为什么它被加载了。

我如何确定受抚养人?

(具体来说,我有一个 WinForms 应用程序正在加载我认为不需要的 WPF 程序集。)

0 投票
1 回答
1102 浏览

c# - .NET 使用应用程序配置文件加载另一个程序集引用的程序集

我的本机程序是 temp/A/prog.exe。我在 temp/B/LoadAssem.dll 中使用 C++/CLI 中的 Assembly::Load() 加载 .Net 程序集。但是 assem.dll 引用了位于 temp/C 中的 dynAssem.dll。我编写的配置文件如下:

但是绑定失败,融合输出如下:

我了解此目录布局不是 .NET 的首选布局。但是,我需要支持多种其他语言,因此无法更改目录结构和程序集位置。

0 投票
2 回答
5514 浏览

.net - 来自 DocumentFormat.OpenXml 的程序集加载错误

使用 MicrosoftClosedXmlDocumentFormat.OpenXmlNuGet 实用程序包时出现错误。在我更新了这些 NuGet 包(从 2.7.2 版到 2.8.1 版)之后,我现在得到了这个异常:

异常 System.IO.FileLoadException:无法加载文件或程序集“DocumentFormat.OpenXml,Version=2.7.2.0,Culture=neutral,PublicKeyToken=8fb06cb64d019a17”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

当我查看解决方案项目中的相关程序集时,它引用了正确的版本 (2.8.1)。查看 NuGet 包管理器,没有引用旧的 2.7.2 版本(4 个项目引用了新版本 - 2.8.1)。我在任何对版本 2.7.2 的项目引用中都找不到提及。正在执行的应用程序文件夹中的文件也是正确的(2.8.1)(通过查看项目属性窗口的详细信息选项卡)。在我的解决方案中,这个对旧版本号的引用(显然是导致这个异常)的位置可能在哪里?

附加信息:我已经grep对正在执行的应用程序目录中的所有文件(包括二进制文件)进行了检查,包括子目录,并且2.7.2找不到该字符串。

此外,当我在 Visual Studio 中调试它时,它可以正常工作而不会引发异常。但是当我在部署的构建文件夹中运行它时,我得到了 FileLoadException。

0 投票
0 回答
92 浏览

assembly-loading - 如何在不添加到 GAC 的情况下将程序集加载到默认加载上下文中?

我试图在 Assembly Resolve 事件中加载程序集。此外,我使用 Assembly.LoadFrom 连接并在应用程序域中加载程序集。

但是当我从同一个应用程序域中的程序集访问一个方法时,我得到了未找到程序集的错误,如下所示,

它尝试使用默认加载上下文加载。请帮助我在默认加载上下文中加载程序集而不放入 GAC。

0 投票
0 回答
47 浏览

c# - 对于具有奇怪名称的类型,类型解析失败 (2.5.29.35)

我有一个 .NET 应用程序,我在其中记录了解析应该在当前域中加载的类型的失败。TypeResolve我有一个看起来像这样的事件处理程序:

我已经开始看到如下消息:

那些名称如2.5.29.35or的类型是什么1.3.6.1.5.5.7.1.1?我不确定这是从哪里来的,以便对其进行调查。

0 投票
0 回答
674 浏览

c# - 将 .NET Core 应用程序部署到 Server 2012 的依赖性问题

我正在使用 Microsoft.AspNetCore.All 2.1.4 在 C#、Visual Studio 15.8.4 中开发一个 Web 应用程序。我正在尝试在 Windows Server 2012 上进行部署。我在服务器端遇到以下错误:

我安装了以下 SDK 和运行时:

我在我的项目中包含System.Xml.XPath.XmlDocument v4.3.0System.Xml.XPath v4.3.0nuget 包。

我怀疑lib/netstandard1.3错误消息中对路径的引用有线索,但我没有足够的经验来解释它试图告诉我的内容。

有人有想法么?是否有任何其他信息有助于诊断此错误?

0 投票
1 回答
160 浏览

c# - 运行时加载 Azure.Search.Common.5.0.2 无法加载 Microsoft.Rest.ClientRuntime

我正在尝试在运行时加载 Microsoft.Azure.Search.Common.5.0.2 的 dll。根据我在nuget page上看到的内容,以及安装时 nuget 下载的内容,这取决于 Microsoft.Rest.ClientRuntime.2.3.12 。但是,当我直接尝试使用以下内容加载 Azure.Search.Common dll 时:-

我得到以下加载程序异常:-

{“无法加载文件或程序集 'Microsoft.Rest.ClientRuntime, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。系统找不到指定的文件。”:“Microsoft.Rest。 ClientRuntime,版本=2.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35"}

从nuget安装后我正在加载dll。具体来说,我正在加载以下 dll:

Microsoft.Azure.Search.Common\Microsoft.Azure.Search.Common.5.0.2\lib\net452\Microsoft.Azure.Search.Common.dll

可以肯定的是,我还检查了我的 csproj 和配置文件,以检查某些版本重定向,但情况似乎并非如此。

上下文:我想知道项目可能使用的所有可能的命名空间,因此我正在下载并加载所有 nuget 包以获取它们的命名空间等。

编辑:

我试图通过将 dll 加载到 ILSpy 中来进一步分析它。在加载 dll 时,ILSpy 还显示它引用了 Microsoft.Rest.ClientRuntime 的 2.0.0.0 版本。它也无法加载该引用并给出以下错误:-

// Microsoft.Rest.ClientRuntime, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 // 程序集引用加载信息: // 程序集引用加载过程中出现了一些问题,更多信息见下文!// 错误:找不到参考:Microsoft.Rest.ClientRuntime,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35

// System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a (unresolved) // Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed (unresolved) // Microsoft. Rest.ClientRuntime.Azure, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 // 程序集引用加载信息: // 程序集引用加载过程中出现了一些问题,详情见下文!// 错误:找不到参考:Microsoft.Rest.ClientRuntime.Azure, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

0 投票
1 回答
100 浏览

c# - 预加载程序集似乎不起作用

我正在编写一个测试来检查我的 Unity 配置中的所有控制器是否已正确注册。作为测试的一部分,我使用反射来检查所有继承自System.Web.Mvc.Controller. 但是,我始终如一地得到一个System.Reflection.ReflectionTypeLoadException. 我觉得这很奇怪,原因有两个:

  1. 我的文件顶部有一个 using 语句,它应该会导致这个特定的程序集在测试运行时自动加载。
  2. 我还尝试预加载程序集。

我的代码是:

请注意,Controller此处的引用特指System.Web.Mvc.Controller.

抛出的异常没有内部异常和大量的loader异常,都说明Cannot resolve dependency to assembly 'System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.

有人可以解释为什么预加载似乎没有以这种方式工作,以及我将如何正确确保加载正确的程序集?

0 投票
2 回答
2657 浏览

c# - 使用 Swashbuckle.AspNetCore.Cli 时无法加载文件或程序集“Microsoft.OpenApi”...

当使用以下命令行时,我在使用文章使用 AutoRest 生成 API 客户端中的示例 MS PowerShell 脚本时收到主题错误消息

被执行。解决方案?

仅供参考:Swashbuckle.AspNetCore.Cli 入口源代码位于此处:Swashbuckle.AspNetCore/src/Swashbuckle.AspNetCore.Cli/Program.cs

更新

我应该发布运行时错误消息的全文 - 这里是:

0 投票
1 回答
661 浏览

c# - T4 模板失败,因为它们尝试从 Visual Studio 公共目录加载程序集

我们有一个项目,它使用实体框架来对数据库的数据进行增删改查。

我现在正在尝试编写一个 T4 模板,该模板使用 EF 访问以代码形式生成测试数据,例如var users = new List<User>{ new User {...}, new User {...} };.

当我尝试访问从数据库中检索数据的函数时,我收到一条错误消息,指出实体框架提供程序没有返回继承自 System.Data.Entity.Core.Common.DbProviderServices 的对象。

好的,暂时忘记错误:我的猜测是,负责处理通常从bin\debug\目录加载的实体框架访问的程序集现在正在从目录中某处的 Visual Studio 工作目录加载C:\Program Files (x86)\。这会导致找到不同的程序集。我不想为所有需要的程序集使用绝对路径,因为这会给我的同事带来问题,他们的 PC 上可能有不同的配置。

是否可以指示模板从 $(SolutionDir) 运行?

编辑

我想我更进一步:下面的脚本现在要求在 App.config 中输入连接字符串,而该连接字符串又不在 Visual Studio 的工作目录中。

编辑 2

离解决这个问题又近了一步,但仍然没有。我添加了以下代码来初始化上面的脚本(也进行了一些编辑)。

我现在收到以下错误:

[A]Oracle.ManagedDataAccess.Client.OracleConnection cannot be cast to [B]Oracle.ManagedDataAccess.Client.OracleConnection. Type A originates from 'Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' in the context 'Default' at location 'c:\program files (x86)\oracle developer tools for vs2017\odp.net\managed\common\oracle.manageddataaccess.dll'. Type B originates from 'Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' in the context 'LoadFrom' at location 'C:\Users\<userId>\AppData\Local\assembly\dl3\15K0NR5V.AGY\O2O039L7.GXW\137c2a2f\00141e2f_86d5d201\Oracle.ManagedDataAccess.dll'.

它尝试从 2 个不同的位置加载程序集。我猜第二个位置是 T4 流程临时存储程序集的地方。