C# Azure引用了不正确的DLL

C# Azure引用了不正确的DLL,c#,azure,dll,C#,Azure,Dll,这在某种程度上是对以下内容的后续: 我引用的是核心框架DLL的替代版本。Visual Studio(和本地调试器结构)在引用此文件时没有问题。此外,该文件被标记为Copy Local。然而,当我部署到云端时,我得到: 无法加载文件或程序集“(程序集强名称)”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配 使用远程桌面,我确定正确的文件确实与我的其他依赖项一起位于E:\approt文件夹中。我假设结构正在GAC中查找,而不是使用我的文件 有没有办法强迫它先使用我的DLL 注意:替换.NET

这在某种程度上是对以下内容的后续:

我引用的是核心框架DLL的替代版本。Visual Studio(和本地调试器结构)在引用此文件时没有问题。此外,该文件被标记为
Copy Local
。然而,当我部署到云端时,我得到:

无法加载文件或程序集“(程序集强名称)”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配

使用远程桌面,我确定正确的文件确实与我的其他依赖项一起位于
E:\approt
文件夹中。我假设结构正在GAC中查找,而不是使用我的文件

有没有办法强迫它先使用我的DLL

注意:替换.NET CLR DLL的整个概念无论如何都是一个巨大的黑客行为,所以黑客行为是受欢迎的。当.NET4.5支持我需要的功能时,这些功能都将被剥离


进一步信息:看起来我的web角色工作正常,但当我的工作者角色试图构建我的Autofac容器时,它会因该错误而死亡。即使在构建程序集之前显式加载程序集,也会发生这种情况,这也可以正常工作。

如果项目的某个版本没有针对.NET Framework版本,我已经看到这个问题。也许可以检查以确保解决方案中的所有项目都具有相同的设置

您可以尝试使用Appdomain.AssemblyResolve事件捕获并手动加载它。但是,我不知道它是否被触发,这是一个解决办法。

您可以运行fusion日志,查看它从何处加载。如果正在运行其他程序并首先加载该文件,则可能需要为该进程创建一个.config文件。您可能还可以执行一些操作,例如创建一个新的appdomain并在其中加载您的程序集,例如这对动态程序集所做的操作:


您是否可以尝试暗示应首先在本地文件夹中探测的CLR:

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
  <probing privatePath="." /> 
</assemblyBinding> 
</runtime>


. 这可能会有所帮助。

这与框架版本无关。我正在替换CLR DLL,这意味着每个框架版本都是错误的框架版本。我需要强制它加载正确的dll.kk。很抱歉当解决方案中有不同的.net framework版本时,我刚刚看到了相同的错误。这不是一个坏主意。我要试一试。在.NET4.5发布之前,整个概念都是一个解决方案,应该包括我需要的内容。嗯,许可证中明确禁止你做的事情。Azure强制执行或假设它的几率不是零。DLL的ngen ed版本可能会起作用。