2012-03-29 77 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