GAC中的旧dll仍在使用中

时间:2011-11-30 11:00:02

标签: c# visual-studio-2008 assemblies gac

我有一个设置,在每次构建之后将程序集发布到GAC。但我的应用程序一直使用旧的DLL。构建之后,新的dll将在新文件夹中创建。文件夹名称为7.1.7573.0_ d516cb311和7.1.5000.8888 _d516cb311。第二个文件夹是最新的。看来(从文件夹名称)我当前的代码是发布旧的DLL。这是我的应用程序使用旧的DLL的原因吗?如果是,我必须做什么才能发布当前的装配?

编辑:

在web.config文件中,程序集在runtime元素下注册。它的版本是Version 7.0.0.0。

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<qualifyAssembly partialName="dllpartialname" fullName="dllfullname,version=7.0.0.0,publicKeyToken=d516cb311,culture=neutral"/>
</runtime>
</assemblyBinding>

EDIT2: 现在我知道问题是什么。我的Web项目引用了一个版本为7.1.7573.0的程序集。但是assemblyinfo.cs文件(我的类库)中的assemblyversion是7.1.5000.8888。当我构建类库项目时,它正在向GAC发布一个版本为7.1.5000.8888的程序集(即assemblyinfo.cs文件中的assemblyversion)。但是因为我的网络项目引用了7.1.7573.0。 ,它仍然使用文件夹7.1.7573.0_d516cb311中的dll并忽略其他文件夹。

编辑3: 现在面对不同的问题。我更新了assemblyinfo.cs文件中的assemlyversion。但是当我尝试构建它时,它会自动恢复更改。它说这个文件已在源编辑器外修改。为什么会这样?有没有人对此有所了解?

谢谢, SYD

1 个答案:

答案 0 :(得分:0)

您遇到的问题是,GAC总是获胜。

当您引用dll时,即使您引用其他本地dll,GAC中的版本也会获胜。

从GAC中删除旧的dll

为新的本地版本的dll添加新引用,并更改配置行以匹配新dll的版本号。

版本号可以在文件的属性中找到。