VS 2008 SP1用のSilverlightツールの最新リリース版では、参照プロジェクトファイルのSilverlightApplicationListプロパティにリストが保持されます。 たとえば、私は私のソリューションにSilverlightApplication2とSilverlightApplication2.Webを持っています(前者は前者を参照しています)。本当にそこ
<SilverlightApplicationList>{BBA7B148-42AE-477E-BB5E-0BA5AEC0A467}|..\SilverlightApplication2\SilverlightApplication2.csproj|ClientBin|False</SilverlightApplicationList>
純粋にDTEを経由してこのプロパティにアクセスする方法はありませんが、そうするのVisual Studio SDK/VSIPインタフェースを使用することができます。私は私のSilverlightApplication2.Web.csprojファイルに次のノードを持っています(具体的には、MSBuildプロパティにアクセスするためのIVsBuildPropertyStorageインターフェイスを取得する)。ここでは、コードスニペット(VSPackageのメニューコマンドハンドラで実行されます)は、次のとおりです。
IVsSolution solution = GetService(typeof(SVsSolution)) as IVsSolution;
IVsHierarchy hierarchy;
solution.GetProjectOfUniqueName(@"SilverlightApplication2.Web\SilverlightApplication2.Web.csproj", out hierarchy);
IVsBuildPropertyStorage buildPropertyStorage = hierarchy as IVsBuildPropertyStorage;
if (buildPropertyStorage != null)
{
string silverlightAppListValue;
buildPropertyStorage.GetPropertyValue("SilverlightApplicationList", "Debug", (uint)_PersistStorageType.PST_PROJECT_FILE, out silverlightAppListValue);
MessageBox.Show(silverlightAppListValue);
}
それでもアドインからこれをやってみたい場合は、あなたがCraig mentionsをキャストするというアプローチに従うを取得する必要がありますDTEオブジェクトをIServiceProviderに渡します(GetServiceを呼び出すことができます)。
- Aaron Marten