VS 2010多项目模板:项目间参考

Mar*_*man 6 templates visual-studio-2010

我目前正在开发一个多项目模板.我正在使用此处记录的方法:如何:创建多项目模板.此模板将具有一个主网站模板(以MVC 3 temaplte为模型)和一些其他调用库模板,以保持功能分离.

示例:WebsiteProject1位于模板项目的一个文件夹中,其所有文件和.vstemplate都位于该文件夹下.ClassLibrary1位于模板项目中的另一个文件夹下,并且还有自己的.vstemplate文件.

我的问题是,如何在WebsiteProject1中为ClassLibrary1设置引用,以便在从模板创建项目时,引用存在并解决?这甚至可能吗?

Iva*_*anL 6

我今天正在进行类似的设置,我发现它确实可行,但它需要在导出模板后手动调整您的WebsiteProject的csproj文件.还有一些错误,在ProjectReference标签下的Name标签中没有令牌替换.

基本上,您希望csproj文件包含以下内容:

<ItemGroup>
    <ProjectReference Include="..\$SolutionName$.Library\$SolutionName$.Library.csproj">
        <Project>{8a8efea7-e80c-4de2-8c35-ced49a814675}</Project>
        <Name>ClassLibrary</Name>
    </ProjectReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

请注意,我没有替换<Name>标记值,因为令牌替换不起作用.幸运的是,这似乎并不妨碍参考的工作.

编辑:使用$ safeprojectname $将引用项目本身.如果您的类库有一个硬编码的名字,这是不是一个真正的问题,但在我的情况,我想一个名字,如"NewProject.Library"我解决了这个通过添加CustomParameter $解决方案名称$像这样在我的多项目vstemplate文件:

<CustomParameters>
  <CustomParameter Name="$SolutionName$" Value="$safeprojectname$"/>
</CustomParameters>
Run Code Online (Sandbox Code Playgroud)