ウィザードには、既存のプロジェクトを新しいソリューションに追加するための次のコードがあります。
//generating files
if (dte.Solution.Projects.Count < 1) // Solution is empty or doesn't exist
{
dte.Solution.Create(oneFolderHigher(Params.OutputDir, solutionName),
solutionFileName(solutionName));
}
// adding created project to solution
dte.Solution.AddFromFile(Path.Combine(Params.ProjectRootFolder,
Params.ProjectName + ".csproj"));
MS Visual Studio 2010 では問題なく動作しますが、2012 では失敗します (2 番目のパラメーターで実験しました)。
System.Runtime.InteropServices.COMException (0x80004004): 操作が中止されました (HRESULT からの例外: 0x80004004 (E_ABORT)) EnvDTE.SolutionClass.AddFromFile (String FileName、Boolean Exclusive) at Wizard.Generator.NewProjectGenerator.Generate (Action`1 logMessage) Wizard.Forms.WizardForm.Finish() で
このエラーの後、新しいプロジェクトを手動でソリューションに追加すると、すべて正常に動作します。しかし、「申し訳ありませんが、新しく生成されたプロジェクトを追加することはできませんので、自分で追加してください」とは言えません。
MSDN は次のことを提案しています。
実行中にウィザードの UI を非表示にする場合は、AddFromFile ではなく LaunchWizard メソッドを使用してウィザードを実行できます。LaunchWizard には、UI を無効にできるパラメーターがあります。
ただし、この方法ではウィザード ファイルが必要になるため、解決策にはなりません。
誰か助けてくれませんか?ウィザードは、「新規 -> プロジェクト」メニューから実行されます。