Класс прокси, созданный из WSDL, имеет ошибку, совместимую с CLS

#c# #.net #wsdl #cls-compliant

#c# #.net #wsdl #совместимый с cls

Вопрос:

Я попытался сгенерировать прокси-класс из файла WSDL, предоставленного с использованием .net 2003. Когда я попытался добавить этот файл класса в свой проект, который находится в .net 2003, он выдает ошибку в прокси-классе типа «Идентификатор не указан в коде, совместимом с CLS»

Что может быть причиной этого?

Идентификатор ‘FinancialTransactionCard.lifeCycleStatus’, отличающийся только тем, что не соответствует CLS

 [System.Xml.Serialization.XmlElementAttribute("lifecycleStatus")]
public FinancialTransactionCardLifecycleStatus[] lifecycleStatus;
  

Комментарии:

1. Должен ли ваш код соответствовать CLS? Если нет, измените ваш файл AssemblyInfo.cs, чтобы изменить его на false.

2. a: укажите нам точную ошибку; b: покажите нам код, который вызывает это…

Ответ №1:

Соответствие CLS, по правде говоря, редко требуется. Если наличие этого предупреждения / ошибки является препятствием для показа, то на данный момент отключите CLS.

Из того, что я могу выделить из ошибки (предположительно переведенной), это звучит как конфликт в случае; например, следующее не соответствует CLS:

 public int a() {...}
public int A() {...}
  

по той причине, что языки, не чувствительные к регистру (VB.NET и т.д.) не может использовать его надежно. Поэтому проверьте свой WSDL и сгенерированный код на наличие всего, что отличается только регистром.

Однако лучшим подходом является отказ от .NET 1.1; Visual Studio 2003 практически по всем показателям устарел. Более поздние фреймворки и инструменты исправляют широкий спектр ошибок (включая проблемы безопасности).