2011-01-01 5 views
2

У меня есть ссылки на две различные службы WCF в проекте. Я обновил ссылку для одной из служб, и теперь для нее не создается код. В файле reference.cs есть только комментарий «этот разрозненный код» вверху. Обновление этой же службы в других проектах и ​​обновление другой службы отлично работают. Это только одна служебная ссылка в этом проекте, которая вызывает проблему, и я не получаю никакой информации от Visual Studio (она просто говорит, что не удалось сгенерировать код, и я должен посмотреть на другие ошибки, которые не предоставляют никакой информации).Ссылка службы WCF прекратила генерировать код для одного проекта

Если я сниму «типы повторного использования в ссылочных сборках», генерируется код, но я не хочу, чтобы этот один проект отличался от других. Я бы хотел решить проблему. Повторная проверка опции повторного использования снова создает пустой файл reference.cs. Тип коллекции также не имеет значения.

Как я могу диагностировать и решать эту проблему?

Update:

Кажется, я ошибся. Обновление сервисной ссылки, похоже, также разрушает поколение в других проектах. Я также замечаю эти предупреждения, а также:

Выборочная предупреждение инструмента: Не удается импортировать WSDL: PortType Подробности: Ошибка при запуске расширения WSDL импорта: System.ServiceModel.Description.DataContractSerializerMessageContractImporter Ошибка: ISerializable тип с именем контракта данных «Исключение» в пространстве имен «http://schemas.datacontract.org/2004/07/System» не может быть импортировано. Пространство имен контрактов данных не может быть настроено для типов ISerializable, а сгенерированное пространство имен «TheDefaultNamespaceOfTheProject.ServiceReferenceName» не соответствует требуемому пространству имен CLR «Система». Убедитесь, что требуемое пространство имен было сопоставлено с другим пространством имен контрактов данных и рассмотрите возможность его явного сопоставления с использованием коллекции пространств имен.

Очевидно, я изменил пространство имен там, но похоже, что он пытается отобразить System.Exception в ThatNamespace.Exception? Зачем это делать, и как я могу это исправить? Я думаю, что это ключ ко всему этому.

+0

Попробуйте использовать программу svcutil.exe командной строки. Преимущество состоит в том, что он выводит сообщения об ошибках на консоль. –

+0

Он успешно сгенерировал код. Было ли это для диагностических целей или идея использовать его вместо утилиты сервисного контракта в Visual Studio? –

ответ

0

У меня была аналогичная ошибка в приложении Silverlight, вызывающем вызовы WCF. Я создал метод WCF, который передал объект Exception в качестве параметра. Оказывается, что объекты исключений не сериализации в Silverlight, потому что:

http://blogs.msdn.com/b/suwatch/archive/2009/01/21/wcf-silverlight-exception-and-serialization.aspx

Вот соответствующий отрывок:

WCF’s DataContractSerializer serialize s Exception class via ISerializable (Exception in .Net Framework implements ISerializable). However, in Silverlight, there is no ISerializable interface. Therefore, Serialization information of Exception transferred over the wire will not be set into the Exception class. This does not only apply to Exception but also any types implementing ISerializable on the .Net Framework serialized to Silverlight.