问题标签 [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 回答
286 浏览

assemblies - 为什么尝试在 NUnit 2.5.4 下使用两个 .NET 4.0 程序集进行单元测试会失败?

我有一个 MSBuild 脚本,它使用 NUnit 在两个程序集中运行测试。这些是在 .NET Framework 3.5 上的,并且在很长一段时间内都能完美运行。

命令行是:(实际路径和名称已简化)

我已经升级到 VS2010,现在已经使两个测试程序集以 .NET 4.0 为目标。我也升级到 NUnit 2.5.4。

我可以使用以下内容对单个程序集进行单元测试:

它适用于tests1.dll 或tests2.dll。

如果我尝试像以前一样指定两者,它现在会失败。

错误是:

我查看了 fuslogvw,它显示在 tests1\bin\debug 和 nunit-console 文件夹中搜索了 tests2。即使在命令行中指定了它,它也从不搜索 tests2\bin\debug。

那是怎么回事?

0 投票
1 回答
673 浏览

.net - 从批处理文件运行程序时如何正确加载 32 位 DLL 依赖项

我编写了一个引用 Microsoft.TeamFoundation.VersionControl.Client.dll 的工具,它是一个 32 位 DLL。

当我在 64 位 Windows 上构建我的工具时,我将 Visual Studio 设置为专门针对 X86 以强制它为 32 位构建。

只要我直接调用该工具(例如,通过在命令行上键入“myTool.exe”),以X86 而不是 All-CPU 为目标就不会出现 BadImageFormatException 。但是,如果我运行一个调用该工具的批处理文件,我仍然会收到异常。即使批处理文件在 32 位命令提示符 (%WINDIR%\SysWOW64\cmd.exe) 中运行,也会发生这种情况。

我还能做些什么来完成这项工作?

0 投票
1 回答
50 浏览

asp.net-mvc-2 - MVC2 中的错误意味着我需要编译源代码,但编译后的程序集没有任何作用

在 MVC 框架内使用索引器生成 ID 似乎存在问题(详见此处http://aspnet.codeplex.com/WorkItem/View.aspx?WorkItemId=5495)。

为了解决这个问题,我下载了源代码,对其进行了修改并尝试使用它——但由于缺少用于登录源代码下载的 snk 文件,我尝试的一切都导致引用地狱。

有没有一种方法可以在不重新编译源代码的情况下解决这个问题,或者让我修改后的副本正常工作?

谢谢!

0 投票
1 回答
144 浏览

visual-studio - 编译使用非特定所需版本的 3rd 方供应商组件的 .NET 组件

如果有人要开发一个依赖于供应商 DLL 的非特定版本的 .NET 组件 - 假设它与 My3rdPartyComponent.dll 一起工作,这是一个 .NET 程序集,但哪个版本并不重要。

在这个组件中找到的一些类实例需要传递到我的组件中。开发人员会引用我的组件 dll,但无法访问源代码。

基本上,我希望能够要求用户将 3rdPartyComponent.MyClass 的实例传递给我的组件函数,但我不在乎它是否是第 3 方 dll 的 1.1、2.2、2.23.980 等版本。

有没有办法在仍然输入我想要传递给我的组件的参数的同时做到这一点?我不想使用 Object 作为参考。

在我的组件项目中,我可以在程序集引用上指定 SpecificVersion=True。这会解决我的问题还是会有其他我没有看到的“dll 地狱”问题需要处理?

0 投票
4 回答
2278 浏览

.net - 如何解决 .Net 中的冲突程序集?

在我的网络应用程序中,我使用的是NHibernate.dll。这依赖于以下程序集。

'Antlr3.Runtime,版本 = 3.1.0.39271,文化 = 中性,PublicKeyToken = 3a9cab8f8d22bfb7'

现在在同一个项目中,我必须引入Antlr3.StringTemplate.dll的另一个要求。它依赖于上述程序集的另一个版本。

如果我使用满足NHibernate的Antlr3.Runtime.dll版本,Antlr3.StringTemplate开始抱怨,反之亦然。

如何解决这样的情况?

0 投票
1 回答
116 浏览

.net - Is it possible to run Silverlight code using the runtime of the full .NET framework?

To integrate with the current system for continuous integration, we want to use NUnit for testing (non UI) Silverlight code. Doing this means executing Silverlight code using the runtime of the full .NET framework which usually works just fine as long as not actually using Silverlight specific classes such as the visual elements or DependencyObject. However, some general purpose libraries such as the Reactive Extensions for Silverlight also appears to have a dependency on the Silverlight runtime (agcore).

Is there a way of tricking the runtime into redirecting Silverlight runtime dependencies into some mock version of them? Or is it possible to redirect assembly references such as Reactive Extensions at runtime altogether (when running unit tests only) and load their corresponding counterpart for the full .NET framework instead?

0 投票
2 回答
2506 浏览

c# - 创建的 AppDomain 上的 AssemblyResolve 事件的问题

我正在尝试通过将AppDomain其及其AssemblyResolve事件包装在一个类中来自定义程序集解析过程。我的简化版ClassLoader如下。我遇到的问题是,当事件AssemblyResolve被触发时,似乎我得到了一个新的实例ClassLoader,而不是我之前创建的那个。

执行此代码时,FooProperty 未在 Domain_AssemblyResolve 事件处理程序中初始化,并且 ClassLoader 实例具有与“c”不同的哈希码。

你知道发生了什么吗?或一些解决方法?

谢谢!

0 投票
1 回答
969 浏览

.net - ILMerge 或 ResolveAssembly 之间用于嵌入程序集的缺点、优势等?

目前我知道将程序集嵌入到一个应用程序文件中的两种方法:ILMerge 和使用 ResolveAssembly 事件。

我想知道是否有人在其中一个方面取得了更大的成功。

使用其中任何一个(性能、安全性……)有什么缺点吗?

从我的角度来看,看起来我们应该始终将所有“私有”程序集合并到一个应用程序中,因为当将应用程序作为一个整体考虑时,这种方式更干净。

有什么想法吗?

0 投票
1 回答
1498 浏览

.net - dll替换问题(黑暗之谜)

以下场景发生在 Windows 服务和使用 IIS 的 ASP.NET 应用程序的 Web 上。我有一个应用程序,我想在部署后更改其行为。为此,我终止了应用程序进程(iis 工作进程)或停止 Windows 服务。我将其一个或多个 dll 重命名为扩展名为old。然后我把我想要替换原始dll的dll。当我启动应用程序时,使用的是原始 dll 而不是新的(扩展名为old的 dll )。如果有人能为我解开这个谜,我会很高兴。我必须清除一些缓存才能成功吗?

如果对您有帮助,我正在使用 .Net Framework 2.0。

0 投票
2 回答
323 浏览

asp.net-mvc-2 - MEF 适合我吗?(一个允许客户端应用程序插入的核心应用程序)

我正在尝试确定 MEF 是否是我们的应用程序框架应该采用的正确方向。从我对 MEF 的阅读来看,我们的框架似乎并不“完全”适合,但我会看看是否有专家可以指导我。

我们的框架允许我们将一个核心网站和依赖程序集部署到一个地方(并将修复或功能传播给所有客户),然后我们将客户网站“合并”到核心网站并在需要的地方扩展它。

现在在 IIS 中,每个客户端站点都是在其自己的 AppDomain 中运行的自己的应用程序。但是,每个应用程序都有指向“核心网站”的相同物理路径。

所以我们的文件结构是...

  • /核心站点
    • /bin(包含核心站点和依赖 dll)
    • /[核心站点文件夹](例如模型、视图、控制器、内容等)
    • /客户
      • /_Assemblies(包含所有客户端程序集 - 100 个客户端)
      • /客户1
        • /[客户端站点文件夹](例如模型、视图、控制器等)
      • /客户2
        • /[客户端站点文件夹](例如模型、视图、控制器等)
      • /客户N

所以你可能已经猜到了,程序集加载是我们的问题。出于几个原因,我们不想将所有客户端程序集放入根 /bin 文件夹中。首先,我们不希望每个客户端站点都加载所有其他客户端程序集。其次,我们不希望每个站点的 AppDomain 都因为 /bin 文件夹中更新了另一个客户端的程序集而被回收。

为了在 asp.net 1.1 中进行这项工作,我们遵循http://www.hanselman.com/blog/MovingTheCodeBehindAssembliesDLLsToADifferentFolderThanBINWithASPNET11.aspx并在 web.config 中添加了 <probing privatePath="bin;Clients/_Assemblies"/> 元素在客户端站点的每个视图中使用 <%@ Assembly Name="ClientN" %> 指令。我们必须克服的唯一其他问题是更新客户端程序集,但 asp.net 1.1 会将程序集锁定在 /Clients/_Assemblies 目录中。我们简单地添加了:

和中提琴,一切似乎都像魅力一样运作。不幸的是,在 asp.net 4.0 中,AppDomain.CurrentDomain.SetShadowCopyPath() 已被弃用。因此,我们一直在尝试从字节数组中自己加载程序集,尝试使用 AssemblyResolve 事件,在 [assembly: PreApplicationStartMethod( typeof( MvcApplication ), "PreApplicationStart" )] 中搞砸,尝试使用 System. Compilation.BuildManager.AddReferencedAssembly 无济于事。

我们要么得到: - 没有加载程序集 - 加载了太多程序集,或者 - 程序集被加载但是当视图正在呈现并遇到命名空间应该从 <%@ Assembly Name="ClientN" 定位的 <Import/> 指令%> 只是失败了。

因此,我要求使用任何机制和/或关于 MEF 是否可行的建议提出任何建议。我的 1000 英尺观点是,MEF 更适合 1 个应用程序(和/或网站),其中插入了多个组件。我犹豫是否开始进行主要的代码重构(似乎),因为在我们的情况下,每个应用程序/应用程序域一次只有一个组件插入其中。它似乎也比我们需要它做的更多(只需加载程序集并让 asp.net 识别它......然后我们所有的代码都会工作)。

任何意见是极大的赞赏。