【发布时间】:2012-01-09 14:57:16
【问题描述】:
我有一个设置,在每次构建后将程序集发布到 GAC。但是我的应用程序一直使用旧的 dll。构建后,新的 dll 将在新文件夹中创建。文件夹名称为 7.1.7573.0_d516cb311 和 7.1.5000.8888_d516cb311。第二个文件夹是最新的。看来(从文件夹名称)我当前的代码正在发布旧的 dll。这是我的应用程序使用旧 dll 的原因吗?如果是,我需要做什么才能发布正确的程序集?
编辑:
在 web.config 文件中,程序集在运行时元素下注册。而它的版本是Version is 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>
编辑2: 现在我知道问题是什么了。我的 Web 项目引用了一个版本为 7.1.7573.0 的程序集。但是(我的类库的)assemblyinfo.cs 文件中的 assemblyversion 是 7.1.5000.8888。当我构建类库项目时,它正在向 GAC 发布一个版本为 7.1.5000.8888 的程序集(即 assemblyinfo.cs 文件中的程序集版本)。但是由于我的网络项目引用了 7.1.7573.0。 , 它仍然使用文件夹 7.1.7573.0_d516cb311 中的 dll 并忽略其他文件夹。
编辑 3: 现在面临不同的问题。我更新了 assemblyinfo.cs 文件中的 assemlyversion。但是当我尝试构建它时,它的更改会自动恢复。它说此文件已在源代码编辑器之外进行了修改。为什么会这样?有人知道吗?
谢谢, 西德
【问题讨论】:
-
你能输入你的配置是如何引用文件的吗?类似
<add assembly="ninject, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL"/> -
它以应有的方式工作,为您提供所需的程序集。对版本号进行一些温柔的关怀是明智的,让内部版本号 7573 比内部版本号 5000 旧 不漂亮。
标签: c# visual-studio-2008 assemblies gac