MS Build Error 3181 - Проблема со ссылками на сборки - PullRequest
0 голосов
/ 27 сентября 2010

представьте себе следующий сценарий:

  • Сборка "Foo.dll" ссылается на ADOX-библиотеку (Microsoft ADO Ext. 2.8 для DDL и безопасности), которая была добавлена ​​как Interop.ADOX.dll в каталог bin VS VS 2010. "Локальная копия" для этой ссылки тоже было установлено значение true.

  • Сборка "Bar.exe" ссылается как на Foo.dll, так и на ADOX-библиотеку, поскольку некоторые функции из нее необходимы в Bar.exe

  • Обе сборки подписаны

Когда для «Локальная копия» ADOX-ссылки в Bar.exe также задано значение true, MS Build генерирует предупреждение 3181 - «Два или более файлов имеют одинаковый целевой путь» - что имеет смысл.

Однако, когда я устанавливаю «Локальная копия» ADOX-ссылки в Bar.exe на false, он компилируется нормально, но при запуске приложения возникает ошибка, сообщающая, что сборка Interop.ADOX не может быть найдена и что определение манифеста сборки не соответствует ссылке на сборку.

Полагаю, здесь я упускаю что-то довольно простое, но мне не удалось решить мою проблему с Google. Я был бы благодарен за решения или подсказки в правильном направлении :)

Приветствия

Christian

1 Ответ

0 голосов
/ 27 сентября 2010

Не уверен, почему проект EXE не создал библиотеку взаимодействия. Но решить эту проблему. Вместо того, чтобы снова ссылаться на ADO проекта EXE, пусть он ссылается на библиотеку взаимодействия, созданную проектом DLL.

Лучшим решением было бы не показывать типы ADO в публичном классе. ADO Ext - это пакет для утилит, вы должны уметь его инкапсулировать достаточно хорошо.

...