我在我的C#解决方案的程序集中打开[assembly:System.CLSCompliant(true)]。
我现在在生成的SharePoint Web Service代码中收到一些警告。
以下是不符合CLS的方法之一:
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://schemas.microsoft.com/sharepoint/soap/GetItem", RequestNamespace="http://schemas.microsoft.com/sharepoint/soap/", ResponseNamespace="http://schemas.microsoft.com/sharepoint/soap/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public uint GetItem(string Url, out FieldInformation[] Fields, [System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] out byte[] Stream) {
object[] results = this.Invoke("GetItem", new object[] {
Url});
Fields = ((FieldInformation[])(results[1]));
Stream = ((byte[])(results[2]));
return ((uint)(results[0]));
}
如何删除此警告?
谢谢你, 基思
答案 0 :(得分:1)
您可以使用[CLSCompliant(false)]
属性标记不合规方法以避免警告,但这似乎首先打败了将程序集标记为合规的对象:大概您希望代码实际上是符合CLS。
要使代码符合要求,您需要从uint
/ UInt32
更改方法的返回类型。暴露的无符号类型不符合CLS。
您可以返回long
/ Int64
。 long
类型符合CLS标准,可以安全地处理任何可能的uint
值。
如果您不能或不会编辑生成的代码(添加属性或更改返回类型),那么我认为您唯一的选择是将该代码移动到单独的,不兼容的程序集{ {3}}
答案 1 :(得分:0)
我建议您将Web引用放在一个单独的类库项目中,该项目未设置为符合CLS。从主代码中引用该库。