我創建了一個自定義VS模板,它使用IWizard類在用戶創建項目以設置項目屬性和路徑時執行一些自動操作,我設法設置一些項目屬性,如構建路徑,方法是在RunStarted方法期間,使用$ signs內的參數保存.csproj文件,並在replacementDictionary中設置這些參數。在創建項目期間添加一個鏈接到現有項目
不幸的是,我無法添加項目作爲鏈接到.csproj使用相同的方法。我需要添加一個.cs文件作爲已創建的每個項目的現有項目和鏈接項目,它的路徑將由用戶選擇保存項目的位置決定。我已經到了知道.cs文件路徑的部分(絕對的和相對於項目的路徑)。
這裏是我試過到目前爲止:
- 保存的.csproj文件,該項目的一部分,與佔位符的路徑:
<Compile Include="$path_to_cs_file\cs_file_name.cs$">
<Link>$cs_file_name.cs$</Link>
</Compile>
我試着用絕對路徑和相對路徑來做這件事,但是這個出於某種原因使VS替換了完全不同的路徑Documents and Settings \ user \ Local Settings下的相對路徑。
在RunStarted中,將automationObject轉換爲DTE並調用它的ItemOperations.AddExistingItem方法。使用任一路徑都會導致錯誤(參數不正確)。
在ProjectFinishedGenerating中,保存項目的路徑,然後在RunFinished中,用該路徑創建一個Microsoft.Build.BuildEngine.Project對象,調用DTE命令保存所有文件並卸載項目,然後調用項目對象的AddNewItem方法和SetMetaData對得到的項目項,後來我保存項目,並與DTE對象重新加載它,這又導致同樣的錯誤作爲前
我想感謝所有幫助與主題,我敢很難過。先謝謝你。
我還是設法找到一種解決方法,請參閱我的方法的答案,看看它是否適合你... – JohnoBoy 2010-09-19 06:29:34
感謝您的解決方法,行之有效。唯一的問題似乎是運行後,我得到一個對話框,說「項目不可用」。我只需要點擊「確定」,一切都很好(該項目是可用的,並按預期工作)。你知道如何防止這個錯誤出現嗎?它發生在你身上嗎? – user450354 2010-09-20 08:59:14
我忘了添加下面的命令:'dte.ExecuteCommand(「Project.ReloadProject」);',我認爲這會解決你的問題 – JohnoBoy 2010-09-21 09:36:44