старые библиотеки в GAC все еще используются - PullRequest
1 голос
/ 30 ноября 2011

У меня есть настройка, где сборка публикуется в GAC после каждой сборки. Но Мое приложение использует старую DLL все время. После сборки новые библиотеки создаются в новой папке. Имена папок: 7.1.7573.0_ d516cb311 и 7.1.5000.8888 _d516cb311. Вторая папка самая последняя. Кажется (из названия папки) мой текущий код публикует старую DLL. Это причина, по которой мое приложение использует старый DLL? Если да Что мне нужно сделать, чтобы опубликовать правильную сборку?

Edit:

В файле web.config сборка регистрируется в элементе времени выполнения. И его версия - версия 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: Теперь я знаю, в чем проблема. Мой веб-проект ссылается на сборку с версией 7.1.7573.0. Но версия сборки в файле assemblyinfo.cs (из моей библиотеки классов) - это 7.1.5000.8888. Когда я собираю проект библиотеки классов, он публикует сборку, имеющую версию 7.1.5000.8888 (то есть версию сборки в файле assemblyinfo.cs), в GAC. Но так как мой веб-проект имеет ссылку на 7.1.7573.0. , Он по-прежнему использует DLL в папке 7.1.7573.0_d516cb311 и игнорирует другую папку.

Редактировать 3: Столкнувшись с другой проблемой сейчас. Я обновил версию сборки в файле assemblyinfo.cs. Но когда я пытаюсь его построить, изменения автоматически отменяются. В нем говорится, что этот файл был изменен вне исходного редактора. Почему это происходит ? У кого-нибудь есть идеи по этому поводу?

Спасибо, Сид

1 Ответ

0 голосов
/ 30 ноября 2011

Ваша проблема в том, что GAC всегда побеждает.

Когда вы ссылаетесь на dll, даже если вы ссылаетесь на другую локальную dll, версия в GAC победит.

Либо удалите старую dll из вашего GAC

, либо

Добавьте новую ссылку на вашу новую локальную версию dll и измените строку конфигурации, чтобы она соответствовала номеру версии вашей новой dll.

Номер версии можно найти в свойствах файла.

...