2014-04-02 56 views
2

我使用C#中的Visual Studio 2012VS嚮導模板 - 更改項目的解決方案和目錄

我跟着MSDN步驟寫一個Visual Studio嚮導模板: 我創建了一個VS模板,然後我創建了一個類與它實現了IWizard接口一個類庫項目,我配置了.vstemplate文件等..

現在,我的目標是在RunStarted功能代碼,執行以下操作來寫:

在項目創建,它複製另一個現有的解決方案目錄位置添加到新項目選定位置,然後,不是在新解決方案中創建新項目,而是將新項目添加到複製的解決方案中,在特定的「應用程序」文件夾中,並且不會創建新解決方案。

RunStarted方法中我寫了一個簡單的CopyDirectory代碼,它將想要的解複製到我從ReplacementsDictionary參數中提取的$SolutionDirectory$中。但是現在,我不能成功繼續並更改新的項目配置,儘管它將作爲複製解決方案的項目生成。

你對這個問題有什麼想法嗎? 謝謝!

回答

2

你有2種選擇:

  1. 如果你有解決方案的DTE \ Solution2對象,你可以使用AddFromFile()方法或者通過AddFromTemplate()方法從模板中直接添加該項目。

    當前DTE目的可通過GetService()方法獲得:

    //獲取當前正在運行的Visual Studio IDE的實例

    DTE DTE =(DTE)GetService的(typeof運算(DTE));

  2. 如果你不能得到的溶液,作爲DTE對象,可以通過使用XML編輯編輯.sln file(看看現有的.sln文件的項目是如何加的)。

+0

嗨,我陷入了一個問題:我在VS 2012上使用了你的解決方案,一切運行良好,但現在我必須在VS 2010上也能正常工作。我在MSDN中讀到Project Template不可用在C++ 2010中,我只能使用.vsz模板,它們的行爲完全不同:它使用JavaScript代碼。在2012年,我有一個.vstemplate模板和一個實現了IWizard的classLibrary.dll。你知道我能做些什麼才能在2010年有最接近的解決方案嗎? – user1835297

+0

爲什麼你不使用'.vsz模板'爲2010和2012模板?它可以防止雙重代碼。 2010年的.vsz模板與2012年之間唯一的變化是VS2012中的'Wizard = VsWizard.VsWizardEngine.11.0' 行,VS2010中的Wizard = VsWizard.VsWizardEngine.10.0'。 – user3114639

+0

因爲我想在C#中使用DTE編寫模板後面的代碼,並且.vsz模板背後的代碼位於Java Script中。 – user1835297

相關問題