问题标签 [fusion]
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.
assemblies - 我可以确定是什么触发了装配负载吗?
当 Windows 服务安装程序因“错误 1001。无法在 MyService.exe 程序集中获取安装程序类型”而崩溃时。所以它无法加载 MyServiceInstaller。Fusion 日志记录显示它在尝试查找我的 Data.dll 程序集时失败。
问题是,它不需要加载 Data.dll 来创建我的服务安装程序对象。我认为直到调用包含这些类型的方法之前才触发类型加载。一些 MyServiceInstaller 方法引用来自 Data.dll 的类型,但不引用任何 ctor。
就好像加载 MyService.exe 或探测 MyServiceInstaller 的行为调用了 Data.dll 的加载。
据我了解,融合日志不会告诉我我需要知道什么。到那时为时已晚。我需要知道加载 MyServer.exe 或探测触发 Data.dll 加载的 MyServiceInstaller 是什么。
有业务要求 Data.dll 不能放在 MyService.exe 旁边。事实上,这确实解决了这个问题。我有一个自定义的 AssemblyResolve 事件,它在正常运行时加载 Data.dll。
assemblies - CLR 何时尝试加载引用的程序集?
我想编写一个安装网站并创建 IIS 虚拟目录的小型安装程序应用程序。该应用程序应在 Windows XP/Server 2003 (IIS 6) 以及 Vista/2008 (IIS 7) 上运行。
问题是:对于 IIS 6,我们通过调用 WMI/Metabase API 创建虚拟目录,对于 IIS 7,有一个更好的 API:Microsoft.Web.Administration,但它的程序集仅在 IIS 7 系统上可用。
天真的方法:
不错,不是吗?但是,如何确保在尝试加载 Microsoft.Web.Administration DLL 时不会在旧系统上崩溃?或者是刚加载的程序集,当它第一次使用时?何时首次使用调用程序集的方法?
我想,如果没有 CLR/.NET 规范保证某些确定性,测试也无济于事。
我真的很期待听到您对此主题的经验、提示或解决方案。到目前为止,我还没有在网络上找到任何可以远程使用的东西。
c# - 从 \\localhost\xyz 启动时,.NET 可执行文件不会加载引用的程序集
我的 .NET 可执行文件abc.exe
引用了几个程序集。其中之一被称为xyz.core.exe
。当它从通过共享名称指定的网络位置启动时,我无法让它工作,例如\\localhost\xyz\abc.exe
. 如果我挂载一个名为Z:
on的网络驱动器号\\localhost\xyz
并且启动Z:\abc.exe
.
xyz.core.exe
.NET 在尝试从共享加载程序集时似乎变得困惑。System.IO.FileNotFoundException
它使用以下融合日志信息引发异常:
使用 Process Monitor 从另一个角度来看,我看到一些尝试使用以下路径访问我的本地驱动器:
好像加载器误解了从网络共享加载的意图并放弃了\\localhost
使用C:
。这个问题似乎与安全设置无关(我从来没有在我的机器上弄乱过 CASPOL),我使用的是 .NET 3.5 SP1,它允许从共享启动可执行文件。
通过等效的映射网络驱动器号启动程序这一事实应该证实这不是安全问题。
该问题也与引用是 EXE 程序集这一事实无关,因为它与对普通 DLL 程序集的引用产生相同类型的加载错误。
关于这个加载问题可能是什么原因的任何想法?有没有其他人遇到过这种情况?
.net - 如何注册要加载的非强名称程序集,就好像它在 GAC 中一样?
我们的一个合作伙伴为我们提供了一个我们需要从我们的应用程序访问的程序集。不幸的是,这不是强名称,因此我们无法将其安装到 GAC。而且我们不能把它和我们的可执行文件放在同一个地方。
有解决方案吗?
编辑:这将是仅用于测试的临时解决方案,当他们使用 RC 时,我们将拥有一个强名称程序集。
.net - .NET 程序集加载问题
我正在维护我们的应用程序的构建过程,其中包括一个 ASP.Net 应用程序、两个不同的 Win32 服务和其他与系统管理员相关的应用程序。
我希望在调试和部署时都使用以下配置。
问题是 app.config 中的程序集探测 privatePath 不支持应用程序根目录之外的相对目录。即:不能使用 ../libraries。非常令人沮丧...
如果我强命名我们的程序集,我可以使用似乎支持绝对路径的 codeBase 配置元素,但您需要单独指定每个程序集。
我还尝试挂接到 AppDomain.AssemblyResolve 事件,但在我什至可以在 Main() 中注册事件处理程序之前,我从 .Net Fusion 获得了 FileNotFoundException。
我不喜欢在 GAC 中注册程序集的想法。部署/升级应用程序时太麻烦了。
如果没有指定每个所需程序集的路径,是否还有其他方法可以做到这一点?
.net - 在 app.config 中指定 .net 程序集绑定/融合的搜索路径?
我有一个依赖于其他 .net 程序集的应用程序。当我启动应用程序时,我收到无法加载程序集或其依赖项之一的错误。
我不想将程序集放入 GAC 或应用程序的目录中。有没有办法(app.config?)告诉 .net 在尝试加载程序集时查看给定路径?我相信我可以对单个程序集使用程序集绑定,但我正在寻找一种通配符解决方案来为“搜索路径”添加路径
.net - .NET 中的完全限定类型解析
简单的问题(出现在SharePoint 2010中,但这并不真正相关)。
如何:
...当实际类型 ( LdapMembershipProvider ) 仅在Microsoft.Office.Server.UserProfiles程序集中而不在Microsoft.Office.Server程序集中找到时解决?
两者都是 GAC 注册的。
Fusion是否会探测其他程序集,即使指定了完全限定的类型?
.net - .NET Fusion 记录器:默认图像和本机图像有什么区别?
在 .NET 融合记录器 (FUSLOGVW.exe)中,屏幕右下方的两个选项有什么作用?
以及如何使用其中任何一个来诊断混合模式装配问题?
.net - 未找到程序集引用,即使程序集位于同一目录中
我们目前正在为某些软件开发插件。我们决定使用 .NET 进行开发,即使应用程序是用某种本地语言编写的。由于在 .NET 中直接创建外部接口存在一些问题,我们决定在 C++/CLI 中构建一个桥接 DLL,它会进行一些基本的初始化,然后加载我们的托管程序集并从中创建一个用户控件。
在加载项 .ini 文件中,C++/CLI DLL 按名称引用,因此应用程序将从那里加载它。但是,.NET DLL 只是从 C++/CLI DLL 引用(作为托管引用),因此导出的类型可用。然而,在此设置中,应用程序在加载 .NET DLL 时会崩溃。
我们很快发现我们可以只订阅AppDomain.AssemblyResolve
事件以从 C++/CLI DLL 所在的同一目录加载 .NET 程序集,因此问题本身就解决了。
实际的问题是:为什么加载程序找不到 .NET DLL,即使它与引用它的程序集位于同一目录中?我一直希望加载程序集会首先查看同一个目录,而不是仅仅查看当前工作目录。如果可执行文件更改其工作目录,为什么它会找到程序集?或者如果通过加载 C++/CLI 程序集(而不是纯托管应用程序)调用 CLR,情况会有所不同吗?
.net - 从 .Net v4.0 程序集链接到 .Net v2.0 程序集似乎也链接(和别名)mscorlib v2.0。为什么?
我有一个 .Net 程序集,它导入与 v2.0 运行时链接的程序集。我遇到的问题是,当我尝试对我的程序集运行一些测试时,Fusion 会尝试加载错误版本的依赖程序集。
查看程序集清单后,我可以看到原因:FSharp.Core
链接了错误的版本。在我的构建文件中,我FSharp.Core, Version=4.0.0.0
明确表示,但FSharpPowerPack
似乎链接到 v2.0.0.0,并且有些似乎“赢得”了这场链接战。
这是清单:
请注意,似乎通过包含FSharpPowerPack
其他 .Net 程序集(mscorlib、System、System.Core)的 v2.0 和 v3.5 并包含别名。为什么会这样?这与加载错误版本的问题有关FSharp.Core
吗?
编辑:澄清一下,我的程序集是由 C# v4.0 编译器生成的。