2

我想知道如何使用Empty Visual C++項目的模板以編程方式用這個空項目創建一個新的解決方案。代碼(C#)我有現在的問題是:如何以編程方式創建空的Visual C++項目?

string VSProgID = "VisualStudio.Solution.10.0"; 
Type solnObjType = System.Type.GetTypeFromProgID(VSProgID, true); 
Solution4 soln = (Solution4) System.Activator.CreateInstance(solnObjType, true); 
soln.Create(@"C:\NewSoln", "New"); 
soln.SaveAs(@"C:\NewSoln\New.sln"); 
string emptyVCProjPath = soln.GetProjectTemplate("General/Empty Project", "VC++"); // Here's where I need help 
soln.AddFromTemplate(emptyVCProjPath, @"C:\NewSoln\NewProj", "New.vcxproj", false); 

我沒能找到VC++空項目模板,在所有其他模板(C#/ F#/ VB)所在的位置。當我通過IDE手動創建一個新項目時,VC++空項目模板確實出現在已安裝的模板中。 soln.GetProjectTemplate()應該是什麼參數?它似乎不承認"VC++"作爲一種語言。我知道"CSharp""VisualBasic"是有效的選項。但我想要一個VC++空項目。任何幫助將不勝感激。

+0

僅僅創建一個空的VC++項目並將其用作模板就足夠了嗎? – AVIDeveloper 2012-02-17 21:00:25

+0

我正在考慮這個,但從目前爲止我收集的內容來看,模板應該是ZIP格式。打開空項目後,我嘗試使用「導出模板」功能,但它被禁用。我不確定如何獲取包含必要文件的ZIP作爲模板。我也不明白的是:項目文件中的所有GUID發生了什麼?他們是否爲新項目重新生成? – 2012-02-17 21:55:33

+1

我也找不到一個準備好的VC++模板。但我的建議是自己動手做。即:創建一個空的VC++項目,並根據需要進行設置;保存;在文本編輯器中打開;爲您想要生成的任何數據添加佔位符(例如#GUID#,#CPP_FILES#等)。現在這是你自己的VC++模板。當你想創建一個新項目時,從你的C#代碼中打開你的模板文件,用適當的數據替換佔位符,你就完成了。 – AVIDeveloper 2012-02-17 22:17:57

回答

3

我發佈這個答案,希望它可以幫助某人面對同樣的問題,我正面臨着。

顯然Visual Studio可擴展性框架API不提供以編程方式創建空的Visual C++項目的選項。我不得不生成解決方案和項目文件來實現這一點。具體而言,必須生成[solution_name].sln,[project_name].vcxproj[project_name].vcxproj.filters文件。必須爲新項目生成一個GUID並插入適當的位置。如果需要將文件添加到此空項目,則需要爲頭文件生成ClInclude標記,併爲源文件標記ClCompile標記。這些標籤被添加到[project_name].vcxproj[project_name].vcxproj.filters文件中。請參閱現有的Visual C++項目文件,以幫助您找出所處的位置。這非常簡單。


UPDATE

出於某種原因,在VC++的解決方案產生這種方式並不直接打開(通過雙擊Windows資源管理器解決方案文件)。我必須啓動Visual Studio並從那裏打開解決方案。

+1

您的解決方案非常豐富。我會從那裏開始。非常感謝! – smwikipedia 2015-09-25 16:12:32

+1

這是我的解決方案:http://stackoverflow.com/questions/32785764/how-to-programmatically-create-a-vc-project-with-c – smwikipedia 2015-09-29 05:03:08

+1

@smwikipedia我沒有直接操縱XML。我像你一樣使用模板,並使用正則表達式替換(因爲替換字符串不符合我的需要)。我忽略了細節,因爲對於不同的項目需求,細節可能會有所不同。但是,您在解決方案中包含更多詳細信息真是太好了。謝謝。 – 2015-10-01 16:41:04

相關問題