У меня есть библиотечный код, который использует ICSharpCode.SharpZipLib для упрощения использования ZIP-файлов в качестве источников данных при выполнении интеграционных тестов.
В нынешнем виде, если я ссылаюсь на мою библиотеку из другого проекта, другой проект скомпилируется очень хорошо, но когда он обращается к коду, использующему SharpZipLib, я получаю исключение, так как он не находит библиотеку zip:
ошибка: System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'ICSharpCode.SharpZipLib, версия = 0.85.5.452, культура = нейтральная, PublicKeyToken = 1b03e6acf1164f73' или одна из ее зависимостей. Система не может найти указанный файл.
Если типы в моей библиотеке получены из класса в SharpZipLib, это приведет к ошибке компиляции CS0012. Какие еще способы есть для запуска CS0012, чтобы использование кода, который требует SharpZipLib (но явно не указывает это), приводил к сбою компиляции кода потребителя?
У меня были подобные проблемы в прошлом, когда я использовал такие библиотеки, как DeftTech.DuckTyping под капотом. Я добавляю код своей библиотеки в новый проект, начинаю работать, компилировать, запускать, а затем внезапно сталкиваюсь с крайним случаем, когда я использовал утку, чтобы обойти и получить ошибку времени выполнения.
Что бы я больше всего хотел, это иметь такое же поведение, как если бы я производил от типа в сторонней библиотеке, так что ссылка на мой производный тип генерирует CS0012:
Тип 'type' определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку «сборка».