问题标签 [assembly-resolution]

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

.net - TestDriven.NET 下的测试没有获取更新的 fuslogvw 设置

如果有这个重复,我会支持它,但直到有人为我找到它......这是我今天学到的东西[似乎没有人在博客上写过]条目......

使用 TestDriven.NET,我不断地从以下输出Assembly.Load

警告:程序集绑定日志记录已关闭。

要启用程序集绑定失败日志记录,请将注册表值 >[HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。

注意:有一些与程序集绑定失败日志相关的性能损失。

要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。

所以我加载了 fuslogvw,因为我在 x64 系统上,甚至尝试了相同的 x64 版本,但无论我重试多少次,都无法让它显示日志。我验证了注册表中的设置,一切似乎都应该是 -EnableLog已设置,但重新运行仍然没有乐趣。

0 投票
3 回答
1497 浏览

.net - FxCop:被分析的程序集引用的控制程序集未加载

FWIW:Windows 7 64 位,Compact Framework v3.5,FxCop v1.36(运行 fxcopcmd.exe)

我在让 FxCop 1.36 正常运行时遇到问题。我正在使用来自http://www.dotneti18n.com/Downloads.aspx的全球化规则分析一个紧凑的框架应用程序

我正在分析的 .exe 引用了第 3 方控制套件:resco.outlookcontrols.cf.dll。当 fxcop 运行并分析我的应用程序时,它会说找不到这个程序集。我已经检查、重新检查和检查了 30 多次,以确保运行应用程序所需的所有程序集都与正在分析的程序集位于同一文件夹中 - 包括 resco dll。

使用融合日志查看器,我可以获得以下信息:

这是让我非常沮丧的部分:fxcop 文档(此处为http://msdn.microsoft.com/en-us/library/bb429449%28VS.80%29.aspx)说它将加载所有引用的程序集分析的程序集所在的同一文件夹,或来自 /directory: 命令行选项引用的文件夹。

它没有兑现书面承诺。该文件确实存在于与正在分析的文件相同的文件夹中,我尝试将该文件夹作为 /directory: 命令行选项传递。我什至在 .fxcop 文件中设置了 AssemblyReferenceDirectories 元素。然而,根据融合日志,唯一被搜索的地方是探测的“通常”位置。

并且仅供参考 - 我尝试更新 fxcopcmd.exe.config 中的“探测”设置 - 将不起作用,因为正在分析的程序集的文件夹不在 fxcop 工具的根文件夹下,所以它给了我一个警告说不会被调查。

其他人有这个问题吗?有人有解决方案吗?

谢谢

0 投票
1 回答
632 浏览

assemblies - 本机 C++ 插件 DLL 如何加载位于特定目录中的私有程序集

我有一个本机 C++ DLL,它用作另一个应用程序中的插件。此 DLL 有一个嵌入式清单并依赖于位于应用程序外部文件夹中的私有程序集。应用程序无法加载我的插件 DLL,因为我的 DLL 依赖于一个从未找到的私有程序集(它不在应用程序目录中,也不在 winsxs 文件夹中,而是在我的插件目录中,其位置不受控制应用程序)。问题是:如何让系统找到位于我自己特定目录中的私有程序集?作为一个类比,我需要一个等价的 setDllDirectory() 但对于程序集。或者另一种方式让系统找到我的私人程序集。

约束:

因为我的 DLL 是一个插件,所以我无法在应用程序的目录和子目录中安装任何东西。我也无法修改应用程序的行为。
我想避免在 winxs 中共享程序集。
我还必须使用程序集而不是简单的 DLL(我可以使用 LoadLibrary 加载)以避免版本冲突。

谢谢。

0 投票
2 回答
2245 浏览

.net - .NET 加载程序集.config 文件中的属性

我有一个应用程序从属性中的配置(myapp.exe.config)文件中指定的子文件夹加载其大部分 dll

我的问题是:如果 dll 位于探测路径中指定的同一子目录“subdir”中,我可以在运行时仅使用其文件名加载 dll(比如 mydll.dll)吗?

我试过Assembly.LoadFile("mydll.dll")了,但这不会在“subdir”中搜索。

0 投票
2 回答
284 浏览

c# - DLL 依赖项

我有一个使用 Web 服务引用的 C# 库文件。我已经引用了 Microsoft SOAP 类型库 v3.0 并使用 Visual Studio 2008。当我创建一个设置项目时,我收到一条错误消息,指出 mssoap30.dll 和 msxml4.dll 具有尚未自动确定的依赖关系和设置过程失败。

是什么原因以及如何解决这个问题?

0 投票
2 回答
1754 浏览

.net - 将 .NET 引用的程序集放入 bin\debug 时的规则

.NET(或 Visual Studio)构建如何决定是否将引用的程序集复制到您的 bin/debug 或 bin/release 目录?(这是一个 .exe 控制台程序。)

在我的机器上,我在 GAC 中有引用的程序集。一位同事将我的 bin/release 复制到他们的机器上,但它不会运行,因为引用的程序集不在 bin/release 中(而不是在他们的 GAC 上)。

谢谢,

尼尔·沃尔特斯

0 投票
2 回答
3053 浏览

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 程序集的引用产生相同类型的加载错误。

关于这个加载问题可能是什么原因的任何想法?有没有其他人遇到过这种情况?

0 投票
1 回答
522 浏览

c# - 为什么运行时不会自动解决我的程序集依赖项?

我有一些 c++ 代码是基于 MMC 的应用程序的管理单元。此管理单元通过 COM 包装器 (AssemblyA) 使用 .net 2.0 dll。AssemblyA 与启动 MMC 会话的应用程序位于同一目录中。AssemblyA 使用其他一些 .net dll (OtherAssemblies),由于我无法控制的原因,它们不能与 AssemblyA 位于同一目录中。它还允许动态加载某些组件(从 AssemblyB),并在第三个目录中搜索这些组件。来自 AssemblyB 的动态组件引用了 AssemblyA,因为它们在其中扩展了一个基类。

我的问题是,当我尝试加载动态组件时,它无法解析对 AssemblyA 的依赖,并且我的AssemblyResolve处理程序被触发(我使用它来解决OtherAssemblies)。当我Assembly.GetExecutingAssembly ()AssemblyResolve处理程序中查询时,程序集就是我要解析的程序集。

这种行为对我来说似乎有点奇怪,因为我希望 .NET 运行时首先在加载的程序集中查找依赖项,然后在我正在加载的程序集中查找依赖项,然后在 app 目录中查找。其中的第一个和第三个应该包含我要加载的程序集。

我已经修改了我的 AssemblyResolve 方法,以便它在其他位置搜索依赖项,因此它可以工作,例如当前的应用程序目录,但如果我能提供帮助,我真的不想这样做。

这种行为是预期的吗?是因为它是一个 MMC 应用程序,还是因为它是从 C++ 调用的 COM 启动的?我是个笨蛋吗?

0 投票
1 回答
954 浏览

.net - .NET 运行时如何定位非强命名的程序集?

我们有不同版本的非强名称程序集,并且在 app.exe.config 中没有绑定重定向/探测路径到它们。例如,MyDll (1.0.0.0_null_neutral) 和 MyDll (2.0.0.0_null_neutral)。相对于 app.exe,这些程序集存储在 LAC\MyDll_1.0.0.0_null_neutral 和 LAC\MyDll_2.0.0.0_null_neutral 中。

我的理解是,因为 MyDll 程序集不是强命名的,.NET 运行时不会区分不同版本的 MyDll。因此,如果已将 MyDll 1.0.0.0 加载到内存中并且执行了针对 MyDll 2.0.0.0 构建的某些代码,则 .NET 运行时将不会加载 MyDll 2.0.0.0。

但是,当我使用 VS2008 附加到该进程并查看模块窗口时,我注意到 MyDll 1.0.0.0 和 MyDll 2.0.0.0 都是从 LAC 文件夹加载的。

我的理解似乎在某个地方存在差距。有人可以指出吗?

编辑:感谢到目前为止的回复。是的,我跳过了那一点。可执行文件侦听 AssemblyResolve 事件,并通过查看 LAC 来处理它。

我很确定我之前看过一些 MSDN 文档,除非程序集是强命名的,否则这些版本会被忽略。我看看能不能挖出来

0 投票
7 回答
43730 浏览

.net - 帮助调试“无法加载文件或程序集 X 或其依赖项之一”的提示

我正在寻找提示/建议/见解来帮助调试应用程序加载问题;无法加载文件或程序集...

我遇到此问题的解决方案/项目是从 Visual Studio 2008 中的工作副本转换为 Visual Studio 2010 Release Candidate。转换过程似乎很成功,所有解决方案项目都设置为Framework 4

3rd 方组件(图形处理库)例外,但任何答案都可能帮助其他人解决任何麻烦的 DLL。

无法加载文件或程序集“Aurigma.GraphicsMill.DLL”或其依赖项之一。不是有效的Win32应用程序。(来自 HRESULT 的异常:0x800700C1)

此异常令人困惑的是附加文本:is not a valid Win32 application

完整的异常堆栈跟踪已在PasteBin上,但似乎并没有更多地说明这个问题......

到目前为止我没有成功的尝试:

  1. Visual Studio 2010 RC 的简单清理、重建、重新启动组合。
  2. 删除并重新添加有问题的 DLL。
  3. 在有问题的 DLL 上将“本地复制”切换为 true 和 false。
  4. 确认在“成功构建”之后,有问题的 DLL 出现在 bin\debug 文件夹中。
  5. 检查对相关 DLL 的任何不必要的引用(未找到)。
  6. 相关 DLL 的相关许可文件与它位于同一目录中。

我也没有运气在应用程序加载时遇到任何调试器断点。