0

C# ソリューションのアセンブリ内で [assembly: System.CLSCompliant(true)] をオンにしています。

SharePoint Web サービス用に生成されたコード内でいくつかの警告が表示されます。

CLS に準拠していない方法の 1 つを次に示します。

    /// <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]));
    }

この警告を削除するにはどうすればよいですか?

ありがとう、キース

4

2 に答える 2

1

警告を回避するために非準拠のメソッドを[CLSCompliant(false)]属性でマークすることができますが、それはそもそもアセンブリを準拠としてマークする目的を無効にしているようです: おそらく、コードを実際に CLS に準拠させたいと考えています。

uintコードを準拠させるには、メソッドの戻り値の型を/から変更する必要がありますUInt32。公開された符号なしの型は CLS に準拠していません。

long代わりに/を返すことができInt64ます。このlong型は CLS に準拠しており、可能なuint値を安全に処理します。

生成されたコードを編集できない、または編集しない場合 (属性を追加するか、戻り値の型を変更する)、ジョンが提案するように、そのコードを別の非準拠のアセンブリに移動することが唯一のオプションだと思います。

于 2009-07-16T22:50:02.160 に答える
0

CLS 準拠に設定されていない別のクラス ライブラリ プロジェクトに Web 参照を配置することをお勧めします。メイン コードからそのライブラリを参照します。

于 2009-07-16T23:08:43.587 に答える