我们有一个拥有大约200个网站的服务器,它们都运行来自相同程序集的代码。因此,为了提高效率,程序集在gac中注册,版本号为1.0.0.0。他们想要一个开发站点,其中代码与gac中的代码不同。该解决方案由几个项目组成,一个是Web应用程序,它引用了另外三个c#库项目。我已经将所有4个项目版本从1.0.0.0更新到1.0.0.1,然后将新编译的文件推送到与所有其他站点相同的服务器上的开发文件夹中。从我正在阅读的内容来看,这应该强制开发站点使用本地bin目录中的dll而不是gac中由于版本增量而使用的dll。但是,当我运行这个时,我从global.asax中得到错误......
类型'CMIWeb.Global'含糊不清:它可能来自程序集'C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ CMIWeb \ v4.0_1.0.0.0__671ea09b8c72436a \ CMIWeb.dll'或来自程序集' d:\的Inetpub \ wwwroot的\ cmidev \ BIN \ CMIWeb.DLL”。请在类型名称中明确指定程序集。
我不确定如何解决这个问题。
编辑:这是web.config文件的bindingRedirect添加
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependantAssembly name="CMIWeb" PublicKeyToken="671ea09b8c72436a" culture="en-us" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.0.1" />
<dependantAssembly name="CMIBLL" PublicKeyToken="16740601ec0c3aab" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.0.1" />
<dependantAssembly name="CMIData" PublicKeyToken="6016b538121b0f75" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.0.1" />
<dependantAssembly name="CMIObjects" PublicKeyToken="110dd5d29fab7114" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.0.1" />
<dependantAssembly name="CMISettings" PublicKeyToken="90ce34438590d2f3" />
<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.0.1" />
</assemblyBinding>
</runtime>
如果这不起作用,我也尝试添加以下内容,但仍然会抱怨同样的错误。
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="CMIBLL, Version=1.0.0.1, Culture=neutral, PublicKeyToken=16740601ec0c3aab" />
<add assembly="CMIData, Version=1.0.0.1, Culture=neutral, PublicKeyToken=6016b538121b0f75" />
<add assembly="CMIObjects, Version=1.0.0.1, Culture=neutral, PublicKeyToken=110dd5d29fab7114" />
<add assembly="CMISettings, Version=1.0.0.1, Culture=neutral, PublicKeyToken=90ce34438590d2f3" />
<add assembly="CMIWeb, Version=1.0.0.1, Culture=neutral, PublicKeyToken=671ea09b8c72436a" />
</assemblies>
</compilation>