ビルドまたはロードに関する一般的な問題

 
 
 

クラスに(メンバ)定義が含まれていない

特別な構文(get- または set- アクセッサ)が必要なプロパティを使用しようとすると、次のようなエラー メッセージが表示されます。

 
Compiler Error CS0117:
'type' does not contain a definition for 'identifier'

解決方法

プロパティで get- または set- アクセッサを使用する必要がある状況は次の 2 つです。

リファレンス セクションの「C# 構文」のセクションで、正しい構文を確認してください。 さらに、Visual Studio.NET の ObjectBrowser またはオートコンプリート機能を使用することもできます。

名前が存在しない

enum または文字列定数の前にそのモジュール名が付いていない場合は、次のようなエラー メッセージが表示されます。

 Compiler 
Error CS0103:
The name 'identifier' does not exist in the current context

解決方法

enum の場合、モジュール名を含める必要があります。 たとえば以下のようになります。

siMenuAnchorPoints.siMenuTbGetPrimitiveCurveID
siToolbarControl.siTBCtrlBlankSeparator
siImageBitDepth.siImageBitDepthFloat16
siClassID.siGeometryID
// etc.

文字列定数の場合、StringModule を使用する必要があります。たとえば、次のようになります。

StringModule.siBendOpType
StringModule.siCurveFilter
StringModule.siLocalType
StringModule.siUIButtonDisable
// etc.
ヒント:

特定の列挙型や定数のモジュール名を見つけるには、列挙値の名前を SDK ドキュメントのキーワード ボックスに入力します(Softimage で[ヘルプ](Help)[SDK ガイド](SDK Guide)をクリックしてください)。

enum と定数の各ページでは、先頭に C# の各値の完全な名前も示されています。

<#>引数を取るメソッドがない

オブジェクト モデルのメソッドを呼び出すときにオプションの引数を省略すると、次のようなエラー メッセージが表示されます。

 Compiler 
Error CS1501
No overload for method 'method' takes 'number' arguments

解決方法

メソッドが取る引数の数を調べ、欠けている引数がないか確認します。

重要:

すべての引数は、スクリプティングで省略可能であるかどうかにかかわらず、明示的に渡される必要があります。

プロパティがサポートされていない

取得と設定に関してさまざまなデータ型およびクラスが必要なプロパティを使用した場合(Preferences.Categories や廃止された XSIApplication.ActiveProject など)、次のようなエラー メッセージが表示されます。

 Compiler 
Error CS1545:
Property, indexer, or event 'property' is not supported by the language; try directly calling accessor methods 'set accessor' or 'get accessor'

解決方法

場合によっては、問題点を解決する代替のメソッドまたはプロパティが存在します。たとえば、XSIApplication.ActiveProject2 は代替のプロパティで Property オブジェクトを返したり設定したりします。

代替のメソッドやプロパティがない場合は、プロパティに関連付けられているアクセッサ メソッドを使用します。 アクセッサ メソッドを呼び出すには、get_ および set_ をプロパティ名の前に追加します。

// Raises compiler error CS1545:
Preferences pref = xsi.Preferences;
ProjectItemCollection proj_itms = pref.Categories; 

// Special syntax as a workaround
ProjectItemCollection proj_itms = pref.get_Categories;
pref.set_Categories( proj_itms );
ヒント:

詳細については、「プロパティの実装の相違点」を参照してください。

型/ネームスペースが見つからないか、存在しない

Softimage オブジェクト モデル アセンブリが適切にインストールされていないか参照されていない場合、または using ディレクティブを使用して参照するのを忘れた場合は、次のようなエラー メッセージが表示されます。

 Compiler 
Error CS0246:
The type or namespace name 'type/namespace' could not be found (are you missing a using directive or an assembly reference?)

または

 Compiler 
Error CS0234:
The type or namespace name 'name' does not exist in the namespace 'namespace' (are you missing an assembly reference?)

解決方法

次のディレクティブが .cs ソース ファイル内に存在するかどうかを確認します(プラグイン ウィザードは、自動的にこれらのディレクティブを含めます)。

using XSIOM; // Softimage object model
using XSIMath;
using XSIUtil;

ディレクティブが存在した場合、アセンブリが適切に参照されていないかインストールされていない可能性があります。 ソリューション エクスプローラで参照フォルダを開きます。

使用しようとしているアセンブリがリストにない場合は、右クリックしてリファレンスをアセンブリに追加できます。 アセンブリがリストにある場合は、適切にインストールされていない可能性があります。 この問題を解決するには、アセンブリが適切にインストールされているかどうかを確認する必要があります。適切にインストールされていない場合は、該当するアセンブリを GAC に追加します。