问题标签 [assemblybinding]

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

c# - 执行引用多个不同版本的程序集的应用程序

我正在创建一个测试项目来比较 EF4 和 EF5 的性能,并且我希望能够为每个引用正确 EF 版本的 EF 版本拥有一个单独的 dll,但我希望能够从单个可执行文件启动测试,目前,这意味着我的 exe 目录中有 2 个 EF dll 副本,这不好。

我知道您可以使用称为探测的东西以某种方式拥有多个版本的 dll,但我不太确定如何实现它,有人有这样的代码示例吗?或者,还有更好的方法

0 投票
1 回答
4873 浏览

.net - 如何解决 Azure Web 部署上的 System.Web.Helpers 不匹配问题?

我不知道为什么我似乎无法弄清楚这一点。我有点 DLL 强命名地狱。这是正在发生的事情:

  • 我正在使用 Visual Studio 2012 RC 制作面向 .NET 4.0 的 MVC4 站点
  • 我正在尝试在Microsoft.Web.Helpers库中使用 Gravatar Razor 助手
  • 它可以在我的机器上运行,但是在通过 Git 部署到 Azure 后,我在调用 Gravatar 帮助程序时遇到以下异常:

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

似乎我在System.Web.HelpersGAC 上安装的任何托管我的 Azure 站点的版本与我的目标版本不匹配。

这是我尝试过的:

此外,我在 web.config 中有以下程序集绑定重定向:

任何人??

0 投票
1 回答
1155 浏览

c# - 使用当新版本不存在时到新版本的程序集

在某些客户端具有版本 11 而不是版本 10 的情况下,我使用 bindingRedirect 将 TFS 程序集从版本 10 重定向到版本 11。该应用程序是使用 TFS v10 DLL 编译的。

问题是,如果客户端具有 TFS 版本 11 而不是 TFS 版本 10,则重定向可以正常工作。如果客户端具有 TFS v10 而不是 TFS v11,则它们会收到运行时错误:

无法加载文件或程序集,:microsoft.TeamFoundation.Common, Version=11.0.0.0, ... 等等。

如果版本 11 不可用,应用程序不应该回退到使用 DLL 的 v10 吗?

0 投票
1 回答
2257 浏览

.net - 重命名程序集时“找到的程序集的清单定义与程序集引用不匹配”

我有一个包含以下内容的 MyApp.exe.config:

这按预期工作。但是,当我将 MyApp.exe 重命名为 MyApp.renamed.exe,并将配置文件重命名为 MyApp.renamed.exe.config 时,出现异常:“无法加载文件或程序集 'MyApp' 或其依赖项之一。系统找不到指定的文件”。

好的,所以这一定是因为配置文件仍在引用 MyApp 程序集。所以我将其更新为:

当我运行应用程序时,我得到一个新的异常:“找到的程序集的清单定义与程序集引用不匹配”。

我了解上述消息的含义,但这是否意味着我无法重命名我的程序集而不生成新的清单文件?理想情况下,我希望能够重命名我的程序集,并让它仍然工作。这样做的原因是因为应用程序有各种“风格”,我想使用文件名,例如 MyApp.Flavour1.exe、MyApp.Flavour2.exe 等,但是如果不为每种风格生成不同的清单和配置文件,这将无法工作, 原来如此。

我要问的是,是否有一种方法可以创建我的程序集,以便重命名文件不会导致它抛出此异常。

0 投票
0 回答
901 浏览

c# - C# 中的程序集绑定错误

我正在重定向 app.config 中的依赖程序集版本,并通过以下配置从指定位置加载 dll -

在绑定日志中,它似乎按预期重定向了版本,但随后与旧版本进行比较并失败:

我已经验证 C:/libs/myassembly.dll 是新版本。有人可以告诉这里可能是什么问题吗?非常感激。

0 投票
2 回答
4426 浏览

c# - 将dll替换为较新的版本

我有一个包含许多项目的 Caliburn.Micro 应用程序。多个项目在单独的文件夹中引用相同的 dll。现在我需要用更新的版本替换那个 dll。我从所有项目中删除了引用并再次添加。但我收到运行时错误:

在此处输入图像描述

能否请你帮忙?

PS 我尝试使用 fuslogvw.exe,但它显示为空: 在此处输入图像描述

0 投票
1 回答
24373 浏览

c# - web.config>configuration>runtime>assemblyBinding 中生成的条目的含义/原因是什么?

我已经在我的 web.config 文件中注意到这一部分有一段时间了,我现在正试图弄清楚它的确切目的是什么:

所以,第一个条目似乎说:

System.Web.Helpers 是具有公钥标记的依赖程序集的名称31bf3856ad364e35。将版本 1.0.0.0 到 2.0.0.0 重定向到版本 2.0.0.0。

我最好的猜测是,这意味着在 ASP.NET 运行时上下文中执行的任何代码都依赖于具有指定名称的程序集,该程序集也具有指定范围内的版本,就好像它是使用指定版本编译的一样指定的公钥。

这是否意味着如果我有一个依赖于类库的 Web 项目,并且该类库引用了具有 bindingRedirect 的旧版本的程序集,那么代码将像针对新版本编译一样执行?

0 投票
1 回答
10302 浏览

c# - 加载 System.Management.Automation 程序集时出错

我正在开发一个运行 powershell 脚本的 WPF 应用程序。

我添加了以下程序集。

但是当程序运行时出现异常;

无法加载文件或程序集“System.Management.Automation,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。强名称验证失败。(HRESULT 异常:0x8013141A)":"System.Management.Automation,版本=3.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35"}**

当我搜索此错误时,我可以找到一些答案。但这些对我来说并不清楚。请给我建议。

0 投票
2 回答
8107 浏览

asp.net - 防止运行时程序集绑定到旧程序集

我有 3 个项目的解决方案:

Solution.Web.Core - 通用类
Solution.Web.Mvc - MVC 4
Solution.Web.Api - Web Api 2 aka running ASP.NET 5.0 (beta-1) 程序集

我将 WebApi 设置为 MVC 应用程序的子应用程序(在 IIS 中),但是,我无法完全隔离该项目。

因为Solution.Web.Core有一些对 ASP.NET 4.0 程序集的引用,如果我在运行时添加对这个项目的引用,Solution.Web.Api我会在运行时得到以下异常:

无法加载文件或程序集“System.Net.Http.Formatting,Version=5.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

如何防止此错误发生,Solution.Web.Api以便Solution.Web.Core尽管引用 ASP.NET 的旧程序集版本,我仍可以引用它?

注意:由于错误显示“System.Net.Http.Formatting 或其依赖项之一”,老实说,我什至不确定如何找出确切的违规程序集。

0 投票
9 回答
204457 浏览

registry - 如何启用程序集绑定日志记录?

我得到,“无法加载文件或程序集'Bla'或其依赖项之一。试图加载格式不正确的程序。”

详细信息的一部分说:

“警告:程序集绑定日志记录已关闭。要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。注意:与程序集绑定失败相关的一些性能损失日志记录。要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。”

因此,考虑到这可能会让我对为什么会出现上述错误有所了解(也许下一个 YSOD 将包含有关它失败的确切原因的更明确的信息),我导航到注册表中的那个位置,但是没有这样的键我可以看到。它所拥有的是:

我错过了什么?