问题标签 [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.
.net-assembly - 发布 Web 应用程序期间难以捉摸的处理器架构不匹配
我们的团队正在开发一个针对 x64 的 Web 应用程序。它的所有项目引用及其依赖项都针对 x64(我验证了.csproj
文件和程序集)。配置文件中没有后期绑定引用。
一切都在 IIS 8.x Express 下编译并运行良好。只有发布时我们才能看到
文件中的组装平台或 ContentType 无效
在 Fusion 日志中。这发生在aspnet_compiler.exe
作为发布的一部分运行期间。似乎确实存在某种处理器架构不匹配,但在哪里呢?
我还检查了目标框架和目标配置文件。Web 项目的框架是 .NET 4.5。它的所有依赖项都是 4.5 或更低,并且配置文件是非客户端的。
.net - 装配加载程序令人困惑的行为
我正在开发实现自定义视觉设计器的 VS2012 包(使用 SDK)。该解决方案包含几个项目。当我在 VS 实验实例中运行我的包,然后尝试打开我的自定义可视化设计器时,我收到以下异常:
看起来像是程序集绑定问题,所以我决定咨询Fusion Log Viewer以获取有关程序集加载器错误的更多信息。
奇怪的是,Fusion 日志说当我尝试打开我的视觉设计器时,有四次尝试加载VisualDesigner.Configuration
-两次成功,但也失败了两次:
我不知道为什么会这样。为什么VisualDesigner.Configuration
一开始加载成功,但此后加载此程序集会导致失败?
我也想知道为什么在日志中说明Calling assembly : (Unknown).
在装配绑定失败的情况下?
asp.net - Fusion Log Viewer 在 Windows 8.1 升级后无法工作
我注意到,在我升级到 Windows 8.1 后,Fusion Logger 不起作用,从某种意义上说,当我的 .NET 项目运行(ASP.NET 网站)时,单击“刷新”不会产生任何结果。在升级之前,它曾经在 Windows 8 上运行得非常好。
我试过了fuslogvw.exe
:
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64
一切都无济于事。
人们在stackoverflow的其他问题上建议的解决方案没有奏效,尽管它们适用于早期版本的Windows。我试过以管理员身份运行。我还在 Fusion 注册表项中创建了值为 '1' 的 'Forcelog' 和 'LogResourceBinds 'Dwords',但都无济于事。
这真的让事情变得很困难,因为我在开发时将它广泛用于调试目的。有没有其他人遇到过这个问题,或者知道可能的解决方案?
注意:我可能会补充。我正在将我的项目从 MVC 3 升级到 4,并使用 Fusion Log Viewer 来整理不正确的程序集绑定。这可能与 MVC 4 有关吗?
谢谢
c# - 强制第 3 方程序集使用另一个程序集的另一个版本
我正在运行集成测试,当我到达那行代码时:
(使用里面的autofac容器)
我得到这个例外:
融合日志:
似乎 autofac web api 集成仅适用于 web api 2.0。当我使用不再引用 system.web.http 5.0.0 而是引用 5.1.0 的 web api 2.1 时,它就不再工作了。
如何告诉 autofac 使用 system.web.http 5.1.0 版本而不是 5.0.0 ?
我把它放在我的集成测试和 API 项目的 app.config 中:
但它没有用!
另一件非常奇怪的事情是,我已经读过使用 .NET 4.5.1 这个重定向程序集的东西是自动完成的。但它没有发生......
.net - 是否可以用使用不同密钥签名的程序集替换强名称程序集?
我们即将在应用程序的其他组件引用的强名称 .NET 程序集中实现许可算法。当然,我们希望将某人交换包含许可证检查的程序集并由此解锁应用程序功能的风险降至最低。
据我所知,您可以将程序集重定向到不同的版本(通过发布者策略或在应用程序配置文件中)。但是我还没有找到一种方法来重定向到具有另一个名称或使用不同密钥签名的程序集。
是否有其他方法可以影响程序集绑定,以便使用使用不同密钥签名的程序集?如果有,绕过这个算法需要多高的努力?
vb.net - 在 DLL app.config 中使用程序集绑定
我对使用类库很陌生,希望有人能告诉我我是否遗漏了什么,或者我正在尝试做的事情是否值得:
我有一个从 VB6 应用程序运行的 dll。我们将它命名为 test.dll。Test.dll 使用另一个 .dll,我们将其称为 Dep.dll。
起初,我只是在 Test.dll 中添加了对 Dep.dll 的引用,并设置 Copy Local = 'False'。然后我在 VB6 应用程序配置文件中设置程序集绑定:
但我听说我可以为 Test.dll 创建一个 app.config 文件,并在其中而不是在 VB6.exe 的应用程序配置文件中包含上述条目。
出于某种原因,我无法获得以这种方式工作的参考。这是错误消息:
无法加载文件或程序集 'Dep.dll, Version=1.0.0.2,Culture=neutral,PublicKeyToken=xxxxxxxxxxx' 或其依赖项之一。该系统找不到指定的文件。
我将 App.config 文件的 Build Action 属性更改为“Content”,将“Copy Output”属性更改为“Copy Always”。我也没有对 Test.dll 的项目文件中对 Dep.dll 的原始引用做任何事情。我从 VB6.exe 的 app.config 文件中删除了 Dep.dll 的程序集绑定条目。
我们这里有一个使用 app.config 文件的 dll 工作示例,但是它不绑定程序集,只有一堆应用程序设置。
我正在做的研究表明,也许我正在做的事情是不可能的,甚至是最佳实践,但现在我只想知道我正在尝试的事情是否可行。如果是这样,我错过了什么?
.net - Visual Studio + Azure - 部署复制参考输出目录参考
我的 Azure Web 项目刚开始出现程序集绑定错误 - 找不到 Microsoft.Data.Edm v5.6.2.0。
我的项目从 nuget 包中引用了该版本的程序集。
我发现的是这样的:
- 当我构建项目时, bin\ 文件夹包含正确版本的程序集。
- 当我将项目部署到 Azure 模拟器时,bin\ 中的程序集被旧版本覆盖:v5.6.0.0。
我的解决方案中的任何项目都没有引用旧版本,但它被 Microsoft.WindowsAzure.Storage v4.2.1.0 引用,而我的项目又引用了它。
(事实上,存储程序集引用了我的项目也引用的三个程序集的旧版本:Microsoft.Data.Edm、Microsoft.Data.OData 和 Microsoft.Data.Services.Client - 所有三个较新的程序集都被旧程序集覆盖部署。)
这种行为突然出现:我正在迭代一些维护,今天下午第 20 次按 Ctrl+F5,突然看到错误。
- 较新的版本会在 Web 项目的
bin\
文件夹中被覆盖,但不会在[azure project]\csx\Debug\roles\[web project name]\approot\bin
或[azure project]\obj\Debug\[web project name]\bin
文件夹中被覆盖 - 受影响的引用设置为复制本地
- 项目文件的差异显示自上次提交以来没有更改
- 同一解决方案中的 Azure 辅助角色具有相同的引用集但不受影响
- 重启VS和重启都没有解决问题
有没有办法打败 Visual Studio?
asp.net - 无法加载文件或程序集 Autofac,版本 = 3.3.0.0
将我的项目从 Autofac 2.6.3.862 升级到 3.4.0.0 后,出现以下错误。我什至没有在解决方案的任何项目中添加对 Autofac 3.3.0.0 的任何引用。
更新:我还将程序集重定向绑定添加到 web.config,但仍然有错误。
我也尝试将 Autofac 3.3.0.0 添加到 GAC,但没有效果。
c# - windows service with background worker Could not load file or assembly error
I'm creating a windows service, which tests if a scheduled job may be executed and then it starts a background worker to execute the job.
Within the main thread of the windows service, I create a data access layer(DAL) object, from an assembly which is located in the same directory as the windows service executable. This works.
From within the background worker, I also try to create a new instance of the same object. It looks like this is successfull. A method in the DAL loads a SQL file from the assembly and is then executed against a give database.
Somewhere during this process I get the following error:
I don't know why the background worker tries to look into the C:\windows\system32\ directory.
c# - 如何让 mshtml 加载 CustomMarshalers?
我正在开发一个使用 .Net 框架 4 的旧版 c# 应用程序。该应用程序使用 WebBrowser 控件并引用“Microsoft HTML 对象库”(mshtml)。当前版本已部署到 Server 2003,并且仅在安装了 .Net framework 2 SDK 时才会运行。
推送是将应用程序部署到服务器 2008 但没有框架 SDK。但当然,该应用程序不会运行。生成的错误是“无法将‘System.__ComObject’类型的 COM 对象转换为类类型‘mshtml.HTMLFormElementClass’。” 我意识到这个特定的错误可以通过转换为接口来解决。事实上,我做了这个改变,应用程序一直运行到下一个 mshtml 转换错误。有超过 200 行类似的代码分布在整个应用程序中,并且没有很好的方法来测试所做的更改。
我使用 Fusion Log Viewer 来了解正在加载哪些依赖项,并发现当从 Visual Studio 2010 启动应用程序时,mshtml 正在加载 CustomMarshalers,或者如果系统管理员发现 Visual Studio 2010 安装在服务器 2008 在启动应用程序之前。我的直觉是,无论是否存在 Visual Studio,我都需要 mshtml 来加载 CustomMarshalers。
导致 mshtml 加载 CustomMarshalers 的 Visual Studio 是什么?我怎样才能从代码中实现这一点?
CustomMarshalers 的 Fusion Log Viewer 条目: