GAC的老娃娃仍在使用
本文关键字:娃娃 GAC | 更新日期: 2023-09-27 18:16:17
我有一个设置,其中程序集在每次构建后发布到GAC。但是我的应用程序一直在使用旧的dll。构建完成后,将在新文件夹中创建新的dll。文件夹名称为7.1.7573.0_d516cb311和7.1.5000.8888_d516cb311。第二个文件夹是最新的。似乎(从文件夹名称)我当前的代码是发布旧的dll。这是我的应用程序使用旧dll的原因吗?如果是,我需要做些什么才能发布当前程序集?
编辑:在网上。在运行时元素下注册程序集的配置文件。它的版本号是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文件(我的类库)中的汇编版本是7.1.5000.8888。当我正在构建类库项目时,它正在发布一个版本为7.1.5000.8888的程序集(即。在assemblyinfo.cs文件中的程序集版本)到GAC。但作为我的web项目有一个参考7.1.7573.0。,它仍然使用文件夹7.1.7573.0_d516cb311中的dll,而忽略另一个文件夹。
编辑3:现在面临一个不同的问题。我在assemblyinfo.cs文件中更新了汇编版本。但当我尝试构建它时,它的变化会自动恢复。它表示该文件已在源编辑器之外被修改。为什么会发生这种情况?有人知道吗?
谢谢,悉德
问题是,GAC总是赢。
当你引用一个dll时,即使你引用的是一个不同的本地dll, GAC版本也会胜出。
从GAC中删除旧的dll
或
为新的本地版本的dll添加一个新的引用,并更改配置行以匹配新的dll的版本号。
版本号可以在文件的属性中找到