У меня есть ссылки на две разные службы WCF в проекте. Я обновил ссылку для одного из сервисов, и теперь для него не создается код. В файле reference.cs вверху есть комментарий «это генерируемый код». Обновление этой же службы в других проектах и обновление другой службы работают нормально. Проблема вызвана только одной ссылкой на службу в этом одном проекте, и я не получаю никакой информации от Visual Studio (она просто говорит, что не смогла сгенерировать код, и я должен посмотреть на другие ошибки, которые не предоставляют никакой информации).
Если я сниму флажок «повторное использование типов в ссылочных сборках», будет сгенерирован код, но я не хочу, чтобы этот проект отличался от других. Я хотел бы решить проблему. Повторная проверка опции типа повторного использования снова приводит к пустому файлу reference.cs. Тип коллекции тоже не имеет значения.
Как мне диагностировать и решить эту проблему?
Обновление:
Кажется, я ошибся. Обновление справочной службы, по-видимому, нарушает генерацию и в других проектах. Я также заметил эти предупреждения:
Предупреждение о пользовательском инструменте: невозможно импортировать wsdl: portType
Подробно: возникла исключительная ситуация при запуске расширения импорта WSDL: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Ошибка: тип ISerializable с именем контракта данных 'Exception' в пространстве имен 'http://schemas.datacontract.org/2004/07/System' не может быть импортирован. Пространство имен контракта данных нельзя настроить для типов ISerializable, и сгенерированное пространство имен «TheDefaultNamespaceOfTheProject.ServiceReferenceName» не соответствует требуемому пространству имен CLR «Система». Проверьте, сопоставлено ли требуемое пространство имен с другим пространством имен контракта данных, и попробуйте явно сопоставить его с использованием коллекции пространств имен.
Очевидно, что я изменил пространство имен там, но похоже, что он пытается сопоставить System.Exception с ThatNamespace.Exception? Зачем это нужно, и как я могу это исправить? Я думаю, что это ключ ко всему.