私はC#Winforms、.net 4.0で作業しており、いくつかの設計時コンポーネントを設計しています。私の目標は、設計者に、(プロジェクトディレクトリまたは出力ディレクトリのいずれか)に存在する特定のファイルを検索させることです。
とにかく、コードから次の変数の値を見つけることはできますか?
(アウトパス)(ProjectDir)
私はC#Winforms、.net 4.0で作業しており、いくつかの設計時コンポーネントを設計しています。私の目標は、設計者に、(プロジェクトディレクトリまたは出力ディレクトリのいずれか)に存在する特定のファイルを検索させることです。
とにかく、コードから次の変数の値を見つけることはできますか?
(アウトパス)(ProjectDir)
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));