2009-07-27 5 views
1

Я поддерживаю библиотеку C# .Net (vs2005), назовем ее fooLib, разработанной коллегой. Теперь руководство решило, что мы должны изменить его имя, скажем, barLib.Переименование библиотеки .NET

Поэтому я переименовал его, изменил некоторые метаданные (информацию об авторских правах и т. Д.), Зарегистрировал его в gac, удалил ссылку и добавил ее снова в каждый проект, который ее использует, и вуаля!

До сих пор так хорошо, но есть проект, который его использует, что придает мне какую-то странную ошибку при связывании версии Debug, в то время как Release работает как шарм без предупреждения. Это дало мне длинное сообщение об ошибке, в котором говорилось, что он не может найти fooLib.dll (когда он должен искать файл barLib.dll) и сказал мне, что журнал связей был отключен, и способ его активации. Таким образом, я сделал, но единственной новой возвращаемой информацией является список путей, в которых он ищет неправильный файл. Любая идея, как я могу исправить это, не перестраивая решение с нуля?

+1

Вы пытались удалить ссылку на переименованную библиотеку и добавить новую? – maciejkow

+0

Конечно. Спасибо, в любом случае. – raven

ответ

2

Взгляните в файл проекта - убедитесь, что в нем нет ничего странного для разных конфигураций.

Постройте решение из «ультрачистого» - вручную избавитесь от всех каталогов bin/obj.

Когда вы говорите, что существует проблема «связывания» версии Debug, вы имеете в виду, что она не работает во время выполнения, а не во время компиляции?

+0

Нет, он не компилируется. У меня есть испанское сообщение об ошибке, но я постараюсь перевести его: Ошибка Узел [project.dll] не смог преобразовать себя в библиотеку типов. Экспортер библиотеки типов обнаружил ошибку при обработке [project.class] Ошибка: экспортер библиотеки типов не смог загрузить тип [project.class] (ошибка: FileNotFoundException: файл или сборка не могут быть загружены «fooLib, ...» или одна из его зависимостей.Система не смогла найти указанный файл.Тогда он сказал что-то о регистрации компоновщика.Я понимаю теперь, что он должен иметь что-то делать с COM-взаимодействием. – raven

+0

BTW, project.class (имя опущено для краткости) является класс, который наследуется от класса fooLib. – raven

+0

А, я не понимал, что это COM-API. Это, вероятно, меняет ситуацию. Перестроил ли производный класс? –

0

Кажется, что изменение цели сборки с «Любой процессор» на «x86» или «x64», это работает. Смена версии сборки (которая была установлена ​​на x86) на «Любой CPU» сбой с той же ошибкой

Но она работала так, как это было до изменения имени библиотеки. Кажется довольно пугающим ...

Редактировать: Теперь это становится действительно забавным. Если я установил конфигурацию проекта в «Release | Any CPU» с регистром для COM interop unchecked, он компилируется отлично. Затем я могу перейти к отладке, пометить COM-флажок, и он все равно работает нормально. Затем я возвращаюсь к релизу, с опцией interop, и он терпит неудачу. Я возвращаюсь к отладке, и он тоже терпит неудачу.