#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 практически по всем показателям устарел. Более поздние фреймворки и инструменты исправляют широкий спектр ошибок (включая проблемы безопасности).