EnvDTEを使用して、ソリューション内のすべてのプロジェクトを一覧表示しましたが、コードにバグが見つかりました。アンロードされたプロジェクトを取得できません。
アンロードされたプロジェクトをスキップする方法を見つけました:
if (string.Compare(EnvDTE.Constants.vsProjectKindUnmodeled, project.Kind, System.StringComparison.OrdinalIgnoreCase) == 0)
continue;
このように、私のコードはクラッシュしません-しかし、それらはすでに存在しているので、コードを介して欠落しているプロジェクトをロードすることはできません。
アンロードされたプロジェクトをソリューションにロードするにはどうすればよいですか?
私が試してみました:
project.DTE.ExecuteCommand("Project.ReloadProject");
そしてエラーが発生しました:
System.Runtime.InteropServices.COMException(...):コマンド「Project.ReloadProject」は使用できません。
だから私はどういうわけか取得しようとしました
application.DTE.ExecuteCommand("Project.ReloadProject");
しかしその前に、NETで検索したすべての場所から、ソリューション内のプロジェクトを事前に選択する必要があります。そのためには、必要なproject.Name
もの(私が持っているもの)と必要がないパス(すべての例があります)が必要です。 foundは、ソリューションパスがプロジェクトパスと同じであると想定していますが、一般的な状況ではほとんどありません)。