3

データベースをアップグレードするための MSBuild タスクを作成しています (完全なソースはこちら)。基本的に、私が宣言した場合:

public int? TargetVersion
{
    [DebuggerStepThrough]
    get { return targetVersion; }
    [DebuggerStepThrough]
    set { targetVersion = value; }
}

.msbuild次に、ファイルに値を割り当てようとします。

<Target Name="Upgrade">
    <UpgradeDatabase ... TargetVersion="10" />
</Target>

MSBuild がおかしくなり、次のように言います。

エラー MSB4030: 「10」は、「UpgradeDatabase」タスクの「TargetVersion」パラメーターの無効な値です。"TargetVersion" パラメーターの型は "System.Nullable`1[System.Int32]" です。

null 許容プロパティに値を割り当てるにはどうすればよいですか?

4

2 に答える 2

2

その場合、MSBuild は null 許容値をサポートしていないようです。回避策は、null 許容プロパティを内部で使用することですが、null 非許容の public プロパティを提供します。このように、パブリック プロパティへの最初の割り当てにより、内部値が null から実際の値に設定されるため、新たに初期化されたインスタンスには null がありますが、MSBuild はその値を問題なく割り当てることができます。

つまり、MSBuild をだまして nullable を直接サポートさせる方法がない限り:)

于 2009-05-28T10:02:03.177 に答える