问题标签 [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 投票
1 回答
712 浏览

assembly-loading - 使用 AssemblyResolve 事件动态加载程序集随机失败

按照以下知识库文章的示例,我们实现了 AssemblyResolve 事件,以便将 .Net 指向正确的文件夹以从中加载程序集:http: //support.microsoft.com/kb/837908

这是我们当前的实现:

我们在所有批处理程序中都使用它,这些程序通常并行运行并且使用大部分相同的程序集。

批次会定期崩溃,留下以下痕迹:

[26/04/2013 12:35:01] AssemblyLoader:在“C:\COMPANY_Batch\MDS\Executables\MDS\FACADE\COMPANY.DistributieOrderFacade.dll”中找到程序集“COMPANY.DistributieOrderFacade.dll”

[26/04/2013 12:35:01] AssemblyLoader:程序集“COMPANY.DOCUMENTCENTERDOCS.dll”位于“C:\COMPANY_Batch\MDS\Executables\MDS\CLIENT\COMPANY.DOCUMENTCENTERDOCS.dll”

26/04/2013 12:35:01:在队列中创建 COMPANYDocument...:\rug.adroot\dfsroot\mds\Data\queue_new\ 26/04/2013 12:35:01

无法加载文件或程序集 'COMPANY.DistributeOrderBRDA,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 或其依赖项之一。一般异常(HRESULT 异常:0x80131500)

错误中的程序集确实位于 AssemblyLoader 搜索的文件夹之一中。如果我再次运行该程序,它确实会成功。

我试图通过在两个控制台应用程序中使用此程序集加载器并同时访问相同的 dll 来查看 dll 是否被锁定,但这似乎不是问题。

我还应该提到,这只是其中一批的日志。还有其他的,很少有相同的程序集没有被加载。

我不知道接下来从哪里开始寻找解决方案。

0 投票
1 回答
418 浏览

c# - C# Dynamic Data Linq To SQL 网站程序集加载

我正在使用 Visual Studio 2010 Ultimate。当我尝试在我的计算机上将动态数据 linq 导入 sql 网站项目时出现以下错误:

------ 重建所有开始:项目:C:...\TestVersion99Website\,配置:调试任何 CPU ------ 验证网站构建目录'/TestVersion99Website/App_Code/'。构建目录'/TestVersion99Website/DynamicData/Content/'。构建目录'/TestVersion99Website/DynamicData/FieldTemplates/'。C:\Users\Test\Documents\Visual Studio 2010\WebSites\TestVersion99Website\DynamicData\FieldTemplates\MultilineText_Edit.ascx(7):构建(web):无法加载文件或程序集'System.Web.DynamicData,版本 = 99.0。 0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。该系统找不到指定的文件。... C:\Users\Test\Documents\Visual Studio 2010\WebSites\TestVersion99Website\DynamicData\FieldTemplates\Text_Edit.ascx(7):构建(网络):无法加载文件或程序集“System.Web.DynamicData,Version=99.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件。

验证完成 ========== 全部重建:0 成功,1 失败,0 跳过 ==========

该网站是使用 .net 3.5 sp1 框架编写的。System.Web.DynamicData 程序集来自 codeplex 的 DynamicData 4 预览项目。

为了识别错误,我使用 .net 3.5 框架创建了一个新的动态数据 linq to sql 网站项目。网站建成后,我删除了对“System.Web.Dynamicdata 3.5.0.0”的引用。我创建了一个新的 Bin 文件夹,并将程序集“Microsoft.Web.Extensions 99.0.0.0, System.ComponentModel.DataAnnotations 99.0.0.0, System.Web.DynamicData 99.0.0.0”复制到 Bin 文件夹中。然后我确保在 web.config 中将程序集版本更改为 99.0.0.0。但是,当我尝试构建解决方案时,我仍然收到相同的错误消息。我不知道为什么会这样,我真的非常沮丧。

0 投票
0 回答
441 浏览

.net - 装配加载程序令人困惑的行为

我正在开发实现自定义视觉设计器的 VS2012 包(使用 SDK)。该解决方案包含几个项目。当我在 VS 实验实例中运行我的包,然后尝试打开我的自定义可视化设计器时,我收到以下异常:

看起来像是程序集绑定问题,所以我决定咨询Fusion Log Viewer以获取有关程序集加载器错误的更多信息。

奇怪的是,Fusion 日志说当我尝试打开我的视觉设计器时,有四次尝试加载VisualDesigner.Configuration-两次成功,但也失败了两次

我不知道为什么会这样。为什么VisualDesigner.Configuration开始加载成功,但此后加载此程序集会导致失败

我也想知道为什么在日志中说明Calling assembly : (Unknown).在装配绑定失败的情况下?

0 投票
3 回答
11319 浏览

c# - Windows 服务:抛出 System.Reflection.ReflectionTypeLoadException 并显示以下错误消息:无法加载一个或多个重新

我正在使用 Windows 服务,其中我有一个程序集的引用,它是 copy local=false。但是我试图在运行时加载它,虽然当我从 Visual Studio 运行它时工作正常,但是当我尝试安装它时,cmd 给出了这个错误:

这里还要注意的一件事是,如果我将该 .dll 复制到本地,它会使安装正常。但是我不想在安装之前加载它,所以我想在运行时加载它。

提前致谢。

0 投票
7 回答
41825 浏览

c# - 无法加载文件或程序集“Microsoft.Practices.Unity”

我正在尝试升级Unity到版本(2.1.505.2),但是当我运行应用程序时,我得到以下信息FileLoadException

无法加载文件或程序集“Microsoft.Practices.Unity,Version=2.0.414.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。

我们正在从 Unity 2.0.414.0 升级到 2.1.505.2。

  • 解决方案中所有引用 Unity 的项目引用都引用了正确版本的 dll
  • Gac 中没有引用 Unity dll。(通过检查进行双重检查gacutil -l
  • 我从存档中删除了所有 Unity dll。使用 powershell 进行双重检查

    /li>

我怎样才能找出什么/谁仍然指的是 Unity 2.0.414.0?

FusionLogVw 没有告诉我是哪个 DLL 导致了问题。

任何帮助深表感谢!

0 投票
2 回答
148 浏览

.net - Azure SDK 2.1 - 无法加载文件或程序集“System.Web.WebPages.Deployment,

我使用 Web 平台安装程序在我们的开发服务器上安装了 Azure SDK 2.1。更新完成后,我们的测试项目,即 WCF 服务,现在已损坏。当您浏览到项目(在更新之前工作)时,您会收到以下错误:

无法加载文件或程序集“System.Web.WebPages.Deployment,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件。

我搜索的所有内容都引用了 MVC。我们不使用 MVC,从来没有,甚至不应该安装在服务器上。为什么我会收到此错误消息?

编辑:我通过在另一台服务器上的测试发现,安装“Windows Azure SDK for .NET (VS 2010 SP1) - 2.1”包括 MVC 4.0 作为依赖项。为什么要安装这个?

0 投票
1 回答
1188 浏览

c# - 如何在运行时在 C# .NET 集成测试中找到物理路径?

为了围绕基于某些输入构建详细文件的旧遗留进程包装集成测试,我需要通过提供文件的完整路径来动态加载 DLL。

该测试将在许多不同开发人员的机器上运行,这些机器并不总是共享相同的物理应用程序目录,但也将在许多服务器上运行,因为它通过持续集成过程,有时应用程序的多个实例将运行在同一台物理机。关键是,没有可以依赖的标准路径来硬编码到这个 test中。我真正需要的是某种机制,它可以告诉我测试在执行时正在执行的物理路径,然后我可以使用相对路径从那里始终可靠地找到应用程序安装中的 DLL。

由于这是在测试中,我不能依赖 HttpContext.Current.Server.MapPath() 或 Request.ApplicationPath 之类的东西,因为当测试运行时 Current 将为空。

没有编写一个 hack 来部署我需要动态加载到可能构建和运行应用程序的任何驱动器根目录上的特殊文件夹的 DLL,有没有人知道一个好的 .NET 策略来在运行时找到测试的物理路径?

我在 C# Web 应用程序中使用 NUnit,以及 Approval Test 样式断言,因此需要执行此操作的简单测试如下所示:

0 投票
0 回答
533 浏览

c# - 如何正确使用 Assembly.LoadFile?

在执行应用程序期间,我需要能够从具有相同标识的不同位置加载程序集。我使用的是 Assembly.LoadFrom 但此方法仅加载使用的第一个版本,而不加载其余版本。在阅读 MSDN 之后,我发现对于这种情况,我需要使用“Assembly.LoadFile”。我的问题是,在改变了我得到的方法之后FileNotFoundException。这怎么可能?它发生在我之前使用的相同路径上。尝试使用程序集中定义的类型而不是 LoadFile 方法中定义的类型时,也会出现异常。

如果我探索返回的程序集变量,与内部类型相关的每个成员都会显示异常。例如DefinedTypesExportedTypes。探索这些异常,我发现对于每种类型,相应的异常都是FileNotFoundException这样的:

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

任何帮助是极大的赞赏。

0 投票
1 回答
1193 浏览

c# - 在具有不同文件夹结构的 csproj 中使用相同的程序集引用

我有一个 C# 项目 MyProject.csproj,它位于具有以下文件夹结构并引用 Dependency.dll 的解决方案中:

    • 依赖.dll
  • 项目
    • 我的项目
      • 我的项目.csproj

因此,在 MyProject.csproj 中对 Dependency.dll 的引用具有如下所示的 HintPath:

现在我想在不同项目结构中的不同解决方案中使用 MyProject 作为源,无需修改。这是因为 MyProject 位于它自己的源代码控制存储库中,并且我在不同的解决方案中使用它作为 Mercurial 子存​​储库/Git 子模块。(问题可能在源代码控制级别上得到解决......)这样一个不同的解决方案看起来像这样:

    • 依赖.dll
  • 我的项目
    • 我的项目.csproj

请注意,MyProject 文件夹现在与 Libs 文件夹处于同一级别。因此,原来的 HintPath 现在是无效的(因为它应该是..\Libs\Dependency.dll)并且我得到构建错误。

有没有办法解决这个问题,但在不同的解决方案中保持相同的 csproj?

我发现以下可能的解决方案很棒,但需要修改 csproj。这在我的情况下是最有可能的,但有时有一些外部组件我不能请求这样的修改,所以如果可能的话,我会寻找一些解决方案级别的覆盖。

谢谢你。

0 投票
3 回答
11884 浏览

c# - 无法在 mvc 应用程序上加载文件或程序集“Magick.NET-x64”问题

我在 mvc3 Web 应用程序中使用 Magick.net 库,这些是我所做的步骤

我的项目以 AnyCPU 为目标,我的机器是 64 位
将 Magick.NET-x64.dll 的引用添加到项目中。从此处http://www.microsoft.com/en-us/download/details.aspx?id=30679为 Visual Studio 2012 Update 4 安装了 Visual C++ Redistributable 在 机器上安装了适用于 Windows(64 位)的 Ghostscript 9.14 添加

在 web.config 文件上

项目已成功重建 [所有 dll 也都在 bin 文件夹中],但在运行时出现异常

无法加载文件或程序集“Magick.NET-x64”或其依赖项之一。试图加载格式不正确的程序。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取更多信息 > 关于错误及其源自代码的位置。

异常详细信息: System.BadImageFormatException:无法加载文件或程序集“Magick.NET-x64”或其依赖项之一。> 试图加载格式不正确的程序。

源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关 > 异常的来源和位置的信息。

程序集加载跟踪:以下信息有助于确定无法加载程序集“Magick.NET-x64”的原因。