2012-03-29 79 views
5

我目前正在開發一個多項目模板。我正在使用這裏記錄的方法:How to: Create Multi-Project Templates。這個模板將有一個主要網站模板(模仿MVC 3 temaplte)和一些額外的調用庫模板來保持功能獨立。VS 2010多項目模板:項目間參考

示例:WebsiteProject1居住在模板項目的文件夾中,並且該文件夾下具有其所有文件和.vstemplate。 ClassLibrary1位於模板項目的另一個文件夾中,並且也有自己的.vstemplate文件。

我的問題是,如何在WebsiteProject1中爲ClassLibrary1設置引用,以便在從模板創建項目時引用存在並解決?這甚至有可能嗎?

回答

5

我今天正在研究類似的設置,我發現它確實可行,但在導出模板後需要手動調整您的WebsiteProject的csproj文件。另外還有一些Bug,在ProjectReference標籤下的Name標籤中沒有令牌替換。

Basicly你想要的csproj文件包含以下內容:

<ItemGroup> 
    <ProjectReference Include="..\$SolutionName$.Library\$SolutionName$.Library.csproj"> 
     <Project>{8a8efea7-e80c-4de2-8c35-ced49a814675}</Project> 
     <Name>ClassLibrary</Name> 
    </ProjectReference> 
</ItemGroup> 

請注意,我並沒有取代<名稱>標籤值,因爲令牌替換不工作。幸運的是,這似乎不妨礙參考文獻的工作。

編輯: 使用$ safeprojectname $將引用項目本身。如果你的類庫有一個硬編碼名稱,這不是一個真正的問題,但在我的情況下,我想要一個像「NewProject.Library」這樣的名稱,我通過在我的多項目vstemplate文件中添加一個CustomParameter $ SolutionName $來解決此問題:

<CustomParameters> 
    <CustomParameter Name="$SolutionName$" Value="$safeprojectname$"/> 
</CustomParameters> 
+0

在Multi-Project vstemplate文件中,你把'CustomParameters'塊放在哪裏?我添加了它,並改變了我的'.proj'使用'$ SolutionName $',但我沒有得到它來替換參數,它只是留下那些確切的字符在那裏。 – KyleMit 2013-10-28 21:51:31

+1

@KyleMit在我的中找到標籤作爲第一個孩子。 – IvanL 2013-10-29 09:27:54

+0

呵呵,那就是我的位置,Visual Studio Designer給了我這個[**警告**](http://i.imgur.com/H5eGQJF.png)。雖然[MSDN文檔](http://msdn.microsoft.com/en-us/library/ms247063.aspx)似乎與您一致。也許我在別的地方有個問題。 – KyleMit 2013-10-29 13:35:13