原文
VSTA Sample Host Integration.docxは、SDKと一緒にダウンロードできます。
ホスト統合のVSTAサンプル
[VSTA Sample Host Integration]
プロジェクトの保存と読込
Saving and Loading a Project
ファイルからプロジェクトを保存し、読み込むには、まず、あなたは、VSTA IProjectStorageインターフェースを実装するクラスを作成する必要があります。 IProjectStorageは、どんな項目も名前によって検索でき、ストリームに戻すことができる、単純な仕組みです。 これは、バイナリのテーブルや仮想のファイルシステムと同じように、単純です。1つのIProjectStorageは、それぞれのプロジェクトで関連付けられています。 そして、項目の名前は、複数のプロジェクト全体で、固有であると保証されていません。 次に示す例は、MyProjectStorageクラスのIProjectStorageを実装します。Visual Studioで、次の手順を実行します。:
- あなたのプロジェクトに、「MyProjectStorage」という名前のクラスを追加します。
- 次のステートメントを追加します。:
- あなたのプロジェクトのすべての項目のための補助記憶装置として、ファイルシステムを使用するために、IProjectStorageを実装します。:
- あなたのフォ-ムに「Save」という名前のボタンを追加します。そして、ボタンに、イベントハンドラを追加します。
- イベントハンドラに、次に示すコードを追加します。:
using System.IO; using VSTA = Microsoft.VisualStudio.Tools.Applications;
class MyProjectStorage : VSTA.IProjectStorage
{
string _rootDirectory;
public MyProjectStorage(string pathRoot)
{
_rootDirectory = pathRoot;
}
public bool ItemExists(string itemName)
{
string fileName = System.IO.Path.Combine(_rootDirectory, itemName);
return System.IO.File.Exists(fileName);
}
public System.IO.Stream OpenItem(string itemName, bool writeAccess)
{
string fileName = System.IO.Path.Combine(_rootDirectory, itemName);
System.IO.FileMode mode;
if (writeAccess)
mode = System.IO.FileMode.OpenOrCreate;
else
mode = System.IO.FileMode.Open;
return System.IO.File.Open(fileName, mode);
}
}
if (_project != null)
{
MyProjectStorage outputProject = new MyProjectStorage("ProjectName");
_project.Save(outputProject);
}
ユーザーが、あなたのフォ-ムで「Save」ボタンを選択すると、プロジェクトとすべてのその項目は、 アプリケーションの現在の作業ディレクトリの下の、「ProjectName」という名前のフォルダに保存されます。 それらが、アプリケーションの、現在の作業ディレクトリの中に存在しない場合、 あなたは、「ProjectName」フォルダと「Properties」フォルダを作成する必要があるかもしれません。
備考:
保存された項目のデータは、多くの場合、テキストとして読込むことができます。 しかし、厳格なフォーマットとエンコーディングは、VSTAの実装に依存して、変更されることがあります。 VSTAによって保存されるすべてのデータは、ホスト・アプリケーションで「不透明」と扱われます。 VSTAプロジェクトは、ホスティングAPIを通して開く必要があります。(Microsoft.VisualStudio.Tools.Applicationsや管理されていない等価物)。