4

私はC#Winforms、.net 4.0で作業しており、いくつかの設計時コンポーネントを設計しています。私の目標は、設計者に、(プロジェクトディレクトリまたは出力ディレクトリのいずれか)に存在する特定のファイルを検索させることです。

とにかく、コードから次の変数の値を見つけることはできますか?

(アウトパス)(ProjectDir)

4

1 に答える 1

1

Visual Studioインスタンスを表すEnvDTE80.DTE2にアクセスできれば、それほど難しくはありません。実際、dteがDTE2のインスタンスである場合、それは次のように単純です。

foreach (Project prj in dte.Solution.Projects)
                {
                    MessageBox.Show(Path.GetDirectoryName(prj.FullName));
                    MessageBox.Show(prj.ConfigurationManager.ActiveConfiguration.Properties.Item("OutputPath").Value.ToString());
                }

DTE2オブジェクトは、OnConnectionに渡される最初のパラメーターであるため、アドインを作成する場合は簡単に取得できます(アドインプロジェクトのウィザードは、Connectクラスの_applicationObject変数に配置するコードを自動的に作成します)。

コンポーネントしかない場合は、IServiceProviderから派生したISiteを実装するSiteプロパティを取得し、DTE2を取得するように依頼できます。compoがコンポーネントの場合:

   dte = (DTE2)compo.Site.GetService(typeof(DTE2));
于 2012-09-11T10:55:09.090 に答える