我正在创建一个C#.NET项目,我试图加载安装在GAC中的第三方程序集。
但是在某些机器上我收到一条错误,指出“无法加载指定版本7.0.351.0的程序集”。
当我尝试进行程序集重定向时,它不起作用,它仍然显示相同的错误。
注意: 7.0.351.0 - 用于编译的版本。
12.0.0.0 - 目标机器中存在装配
参考属性 特定版本 - >假
别名 - >全球
复制本地 - >假
这是我的示例应用程序配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" >
<dependentAssembly>
<assemblyIdentity
name="Act.Framework"
publicKeyToken="ebf6b2ff4d0a08aa" />
<bindingRedirect oldVersion="7.0.351.0" newVersion="12.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
FUSLOGVW的日志显示
“日志:找不到应用程序配置文件。”
但我已经添加了App Config文件。它没有检测到我的配置文件吗?
如何检测?
我添加了App.Config文件的步骤:
答案 0 :(得分:4)
检查包含web.config
的路径。如果您的web.config
文件位于目录路径中,该路径中包含一个或多个以&#34;#&#34;命名的文件夹;在名称中,Microsoft Fusion将完全忽略所有web.config
条目的assemblyBinding
。
答案 1 :(得分:1)
尝试在bindingRedirect中指定程序集的文化:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Act.Framework"
publicKeyToken="ebf6b2ff4d0a08aa"
culture="neutral" />
<bindingRedirect oldVersion="7.0.351.0"
newVersion="12.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
您还需要验证新版本的程序集是否使用与旧版本完全相同的私钥进行签名。
就配置文件而言,请确认它被称为ABC.exe.config
,其中ABC
是您的可执行文件的名称,并且它位于同一文件夹中(如果这是一个Windows应用程序当然,对于Web应用程序,您需要使用web.config
)。