2011-05-25 63 views
17

在Visual Studio 2010中,我想創建一個項目模板,其中包含指向系統上應存在的兩個文件的鏈接。其中之一是一個常見的AssemblyInfo.cs文件。另一個是強名稱密鑰文件(* .snk)。如何創建包含鏈接文件的Visual Studio項目模板?

我需要這些引用是相對,因爲每個開發人員的工作空間將設置不同。項目模板是否可能以某種方式確定這些文件在每個開發人員環境中的位置?

從閱讀有關模板,它聽起來像他們非常靜態,所以我不知道是否可以做到這樣做的技巧。如果沒有別的,我可以添加虛假引用,這會導致編譯錯誤並迫使開發人員將這些文件掛鉤。但如果我可以爲他們做,那會更好。

+0

您是否曾經找到過解決方案? – 2011-06-22 08:32:42

回答

1

您可以嘗試將嚮導集成到項目模板中,並將路徑設置爲鏈接文件。如果我記得沒錯,你不必創建一個用戶界面;你只需在替換詞典中指定正確的替換,VS將替換模板文件中的值。有關更多信息,請參閱thisthis

2

Microsoft已確認這是可擴展性模型和項目模板的錯誤。我設法通過使用IWizard來解決這個問題。我下面的代碼添加在我IWizard實施RunFinished方法:

//Get linked file directory 
    string coreDir = Path.GetDirectoryName(MyProject.FullName); 

    //Data folder 
    ProjectItem propertiesProjectItem = slSharedProject.ProjectItems.Cast<ProjectItem>().Where(p => p.Name == "Data").First(); 
    propertiesProjectItem.ProjectItems.AddFromFile(coreDir + @"\Service\TheFileIWantToLink.cs"); 

在TheFileIWantToLink.cs副本這個代碼鏈接文件到我的共享Silverlight項目(slSharedProject)。

17

您應該在vstemplate中將CreateInPlace屬性設置爲true。該documentation

指定是否創建該項目,並在指定的位置進行參數替換,或者在一個臨時位置進行參數替換,然後將項目保存到指定的位置。

如果你想相對路徑的工作,你所需要的參數更換的地方出現在那裏你在一個臨時位置創建項目,沒有。

+1

找到我需要的東西,歡呼。只是關於MSDN文檔的簡短說明,它指出默認值爲true,但對於VS 2012項目模板而言似乎實際上是錯誤的。 – 2013-08-20 16:13:53

+0

對於VC++項目模板,CreateInPlace已被破壞。確認爲錯誤:http://connect.microsoft.com/VisualStudio/feedback/details/789683/problem-with-createinplace-tag-in-project-template – makhdumi 2014-05-02 17:52:49

相關問題