2


0

これはしばらく前にMSDNフォーラムに投稿された質問で、この日も未回答のままです。

私が興味を持っているプロパティは、ProjOutputReferencesで、Visual Studioソリューション(.sln)ファイルに格納されています。

Visual Studioでは、このプロパティにはSilverlight WebSiteプロジェクトの[プロパティページ]ダイアログからアクセスできます(Silverlight Tools for VS2008がインストールされている必要があります)。 そこには、上記のプロパティの内容を編集できる "Silverlight Applications"というページがあります。

VSオートメーションまたは低レベルのインターフェースを介して、アドイン内でプログラム的にアクセスする必要があります。

2 Answer


4


Silverlight Tools for VS 2008 SP1の最新リリース版では、リストは参照元プロジェクトファイルのSilverlightApplicationListプロパティに保持されています。 たとえば、私のソリューションにはSilverlightApplication2とSilverlightApplication2.Webがあります(後者は前者を参照しています)。 SilverlightApplication2.Web.csprojファイルに次のノードがあります。

{BBA7B148-42AE-477E-BB5E-0BA5AEC0A467} | .. \ SilverlightApplication2 \ SilverlightApplication2.csproj | ClientBin | False

純粋にDTEを介してこのプロパティにアクセスする方法は実際にはありませんが、それにはVisual Studio SDK / VSIPインターフェイスを使用できます(特に、MSBuildプロパティにアクセスするためのIVsBuildPropertyStorageインターフェイスを取得する必要があります)。 これがコードスニペットです(VSPackageのメニューコマンドハンドラで実行されます)。

IVsSolution解= IVsSolutionとしてのGetService(typeof(SVsSolution))。

IVsHierarchy階層。 solution.GetProjectOfUniqueName(@ "SilverlightApplication2.Web \ SilverlightApplication2.Web.csproj"、階層外);

IVsBuildPropertyStorage buildPropertyStorage = IVsBuildPropertyStorageのような階層。

if(buildPropertyStorage!= null){string silverlightAppListValue; buildPropertyStorage.GetPropertyValue( "SilverlightApplicationList"、 "デバッグ"、(uint)_PersistStorageType.PST_PROJECT_FILE、out silverlightAppListValue);

MessageBox.Show(silverlightAppListValue); }

あなたがまだアドインからこれをやろうと思っているならば、あなたは Craig言及するアプローチに従う必要があるでしょうDTEオブジェクトをIServiceProviderにキャストします(したがって、GetServiceを呼び出すことができます)。

-http://blogs.msdn.com/aaronmar [Aaron Marten]


0