次の方法で共有


SccCreateSubProject 関数

この関数は、lpParentProjPath 引数で指定された既存の親プロジェクトの下に、指定された名前のサブプロジェクトを作成します。

構文

SCCRTN SccCreateSubProject(
   LPVOID pContext,
   HWND   hWnd,
   LPSTR  lpUser,
   LPCSTR lpParentProjPath,
   LPCSTR lpSubProjName,
   LPSTR  lpAuxProjPath,
   LPSTR  lpSubProjPath
);

パラメーター

pContext

[入力] ソース管理プラグインのコンテキスト ポインター。

hWnd

[入力] ソース管理プラグインが、提供するすべてのダイアログ ボックスの親として使用できる IDE ウィンドウへのハンドル。

lpUser

[入力、出力] ユーザー名 (NULL 終端文字を含め、最大 SCC_USER_SIZE 文字)。

lpParentProjPath

[入力] 親プロジェクトのパスを識別する出力文字列 (NULL 終端文字を含め、最大 SCC_PRJPATH_SIZE 文字)。

lpSubProjName

[入力] 提案されるサブプロジェクト名 (NULL 終端文字を含め、最大 SCC_PRJPATH_SIZE 文字)。

lpAuxProjPath

[入力、出力] プロジェクトを識別する補助文字列 (NULL 終端文字を含め、最大 SCC_PRJPATH_SIZE 文字)。

lpSubProjPath

[入力、出力] サブプロジェクトのパスを識別する出力文字列 (NULL 終端文字を含め、最大 SCC_PRJPATH_SIZE 文字)。

戻り値

この関数のソース管理プラグインの実装では、次のいずれかの値が返されることが予期されています。

説明
SCC_OK サブオブジェクトは正常に作成されました。
SCC_E_INITIALIZEFAILED 親プロジェクトを初期化できませんでした。
SCC_E_INVALIDUSER ユーザーがソース管理システムにログインできませんでした。
SCC_E_COULDNOTCREATEPROJECT サブプロジェクトを作成できません。
SCC_E_PROJSYNTAXERR プロジェクト構文が無効です。
SCC_E_UNKNOWNPROJECT 親プロジェクトがソース管理プラグインで認識されていません。
SCC_E_INVALIDFILEPATH ファイル パスが無効であるか、または使用できません。
SCC_E_NOTAUTHORIZED ユーザーには、この操作の実行が許可されていません。
SCC_E_ACCESSFAILURE ソース管理システムへのアクセス中に問題が発生しました。ネットワークまたは競合の問題である可能性があります。 再試行することをお勧めします。
SCC_E_CONNECTIONFAILURE ソース管理プラグイン接続の問題が発生しました。
SCC_E_NONSPECIFICERROR

SCC_E_UNKNOWNERROR
不特定のエラーです。

解説

名前を持つサブプロジェクトが既に存在する場合、この関数では、既定の名前を変更して固有の名前を作成できます。たとえば、"_<number>" を名前に追加することでこれを行います。 呼び出し元は、lpUserlpSubProjPath、および lpAuxProjPath への変更を受け入れるように準備されている必要があります。 lpSubProjPath引数とlpAuxProjPath引数は、SccOpenProject の呼び出しで使用されます。 返されるときに、これらが呼び出し元によって変更されないようにする必要があります。 これらの文字列を使用すると、ソース管理プラグインではプロジェクトに関連付ける必要がある情報を追跡することができます。 呼び出し元 IDE では、返されるときにこれらの 2 つのパラメーターは表示されません。表示に適していない可能性のある、書式設定された文字列をプラグインで使用できるためです。 関数は、成功またはエラー コードを返します。成功した場合は、変数 lpSubProjPath を新しいプロジェクトへの完全なプロジェクト パスで埋めます。

この関数は SccGetProjPathに似ていますが、ユーザーにプロジェクトの選択を求めるのではなく、プロジェクトは自動的に作成されます。 SccCreateSubProject 関数が呼び出された場合、lpParentProjNamelpAuxProjPath は空にはならず、有効なプロジェクトに対応します。 これらの文字列は通常、SccGetProjPath 関数または SccGetParentProjectPath の以前の呼び出しから IDE によって受信されます。

lpUser 引数はユーザー名です。 IDE では、以前に SccGetProjPath から受信したものと同じユーザー名を渡すため、ソース管理プラグインでは、この名前を既定値として使用する必要があります。 ユーザーが既にプラグインとの開いている接続を使用している場合は、この関数が確認なしで動作できるように、プラグインはすべてのプロンプトを排除するよう試みる必要があります。 ただし、ログインが失敗した場合、プラグインはユーザーにログインを入力するよう求め、有効なログインを受信したら、その名前を lpUser に戻す必要があります。 この文字列はプラグインによって変更される可能性があるため、IDE では常にサイズのバッファーを割り当てます (null 終端文字用のスペースを含む、SCC_USER_LEN + 1 または SCC_USER_SIZE)。 この文字列が変更された場合、新しい文字列は有効な (少なくとも以前の文字列と同程度に有効な) ログイン名である必要があります。

SccCreateSubProject と SccGetParentProjectPath に関するテクニカル ノート

Visual Studio では、ソース管理へのソリューションやプロジェクトの追加が簡略化され、ユーザーがソース管理システム内の場所を選択するよう求められる回数は最小限に抑えられています。 ソース管理プラグインが新しい関数 SccCreateSubProjectSccGetParentProjectPath の両方をサポートしている場合、これらの変更は Visual Studio によってアクティブ化されます。 ただし、次のレジストリ エントリを使用すると、これらの変更を無効にして、以前の Visual Studio (ソース管理プラグイン API バージョン 1.1) の動作に戻すことができます。

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\SourceControl] "DoNotCreateSolutionRootFolderInSourceControl"=dword:00000001

このレジストリ エントリが存在しないか、または dword:00000000 に設定されている場合、Visual Studio では新しい関数 SccCreateSubProjectSccGetParentProjectPath を使用しようとします。

このレジストリ エントリが dword:00000001 に設定されている場合は、Visual Studio がこれらの新しい関数を使用しようとしないため、ソース管理への追加の操作は以前のバージョンの Visual Studio の場合と同様に機能します。

関連項目