Cysharp / Claudia

Unofficial Anthropic Claude API client for .NET.
MIT License
167 stars 13 forks source link

Rider上でClaudia.Message.Message()' は古い形式です: Constructors of types with required members are not supported in this version of your compiler.というエラーが発生した。 #11

Closed HiromuHatsuno closed 7 months ago

HiromuHatsuno commented 7 months ago

解決方法

解決方法として、LangVersion.propsファイルの要素の値を10から11に変更したところ、エラーが解消されました。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LangVersion>11</LangVersion>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>

原因

エラーが発生したコードで使用されているMessageクラスを確認してみると、以下のようなコードになっていました。

namespace Claudia
{
    [RequiredMember]
    public record Message()
    {
        // ...
    }
}

[RequiredMember]属性がエラーの原因だと考えられます。[RequiredMember]は、C# 11で導入された新しい属性です。

https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/required

プロジェクトのC#のバージョン(LangVersion)が10以前に設定されていたため、[RequiredMember]属性がサポートされておらず、エラーが発生していたと考えられます。

neuecc commented 7 months ago

あー,たしかにLangVersion = 11は必須になるかもです。 ちょっとUnityのほうのドキュメントを変えてみます。 ありがとうございます!