템플릿으로 생성 된 새로운 솔루션에 기존 프로젝트를 추가하고 싶습니다. vstemplate 파일을 통해이 작업을 수행 할 수 있습니까? 아니면 IWizard를 사용해야합니까? 그리고 IWizard를 사용해야한다면 어떻게 제대로 작동 할 수 있습니까? 일부 솔루션 폴더를 추가템플릿 마법사를 통해 기존 프로젝트를 Visual Studio 프로젝트에 추가하는 방법
- 멀티 프로젝트 템플릿과 하나 개의 프로젝트 정의 wizarddata와
- 마법사 : 현재 나는 다음 시도했다. $ wizarddata $에는 이미 하드 드라이브에있는 프로젝트에 대한 상대 경로가 포함되어 있습니다. 마법사에서이 프로젝트의 기본 경로를 선택합니다. 이 프로젝트를 내 솔루션에 어떻게 추가 할 수 있습니까?
var type = Type.GetTypeFromProgID("VisualStudio.DTE.10.0"); var dte2 = (EnvDTE80.DTE2)Activator.CreateInstance(type); var solution = (EnvDTE100.Solution4)dte2.Solution; var projects = dte2.ActiveSolutionProjects;
프로젝트 모든 프로젝트가 포함되어 있지 않습니다 :
주요 문제는 해결 객체가 아무것도 포함하지 않는 것 같다. dte2.Solution.Projects도 마찬가지입니다. 이 코드는 IWizard 구현의 RunFinished 함수에서 호출됩니다. 또는 :
var type = Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
var dte2 = (EnvDTE80.DTE2)Activator.CreateInstance(type);
dte2.ExecuteCommand("File.AddExistingProject", "X:\\Path\\To\\Project\\ProjectName.csproj");
은 COM 예외를 발생시킵니다. 비주얼 스튜디오의 매크로에서 ExecuteCommand를 실행하면 정상적으로 작동합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
또한이 접근 방식을 사용하여 서버 탐색기 연결 관리자를 얻습니다. 이 코드를 사용 : var dte = automationObject as DTE; Microsoft.VisualStudio.Shell.ServiceProvider sp = new Microsoft.VisualStudio.Shell.ServiceProvider ((IOleServiceProvider) dte); IVsDataExplorerConnectionManager seConnectionsMgr = (IVsDataExplorerConnectionManager) sp.GetService (typeof (IVsDataExplorerConnectionManager) .GUID); 바라기를 이것은 누군가 다른 사람에게 약간 시간을 절약한다. – gab