4

我有一个大部分工作的多项目模板。

我能够生成两个项目及其文件(正确命名),但我的一个项目需要对另一个项目的引用。我试图让模板正确填写这些参考资料,但遇到了问题。

这是我的主(解决方案)模板文件:

<VSTemplate Version="2.0.0" Type="ProjectGroup"
    xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
    <TemplateData>
        <Name>Template</Name>
        <Description>Template (includes web and core)</Description>
        <Icon>Icon.ico</Icon>
        <ProjectType>CSharp</ProjectType>
    </TemplateData>
    <TemplateContent>
        <ProjectCollection>
            <ProjectTemplateLink ProjectName="$safeprojectname$.Web">
                Template.Project.Web\MyTemplate.vstemplate
            </ProjectTemplateLink>
            <ProjectTemplateLink ProjectName="$safeprojectname$.Core">
                Template.Project.Core\MyTemplate.vstemplate
            </ProjectTemplateLink>
        </ProjectCollection>
    </TemplateContent>
</VSTemplate>

现在在“.Web”项目中,我经常说using x.Core;,但如果我这样做$safreprojectname$.Core,最终会变成x.Web.Core. 似乎一旦生成了每个项目,$safreprojectname$变量就会更改为当前项目。这是有道理的。但是有没有办法获得解决方案名称或其他项目的名称?我尝试在解决方案文件中设置一个变量,但它似乎没有传递给项目文件。

有人有建议吗?

编辑:除了下面的有用答案外,这是我完成此过程后写的博客。它链接到我发现非常有用的一堆文章:https ://thebhwgroup.com/blog/2013/10/visual-studio-templates

4

2 回答 2

2

我最终通过使用向导解决了这个问题,如下例所示:http: //blog.tonysneed.com/2011/09/14/build-a-multi-project-visual-studio-template/

除了上面的博客,请查看下面对 VS 2013 的最高评论。我还写了一个快速博客,帮助使用旧版本的 VS:https ://thebhwgroup.com/blog/2013/10/visual-studio-templates

于 2012-07-23T12:54:29.990 回答
0

这是 Q 旧的,我尝试在 VS 2019 中这样做。

另一种方法是CopyParameters="true"在父模板中的每个项目链接上设置如下

<ProjectTemplateLink CopyParameters="true" ProjectName="$projectname$.API">

$projectname$这使您可以使用在父模板中设置的原始值$ext_projectname$

.proj 文件中的示例片段:

<ItemGroup>
    <ProjectReference Include="..\$ext_projectname$.BL\$ext_projectname$.BL.csproj" />
    <ProjectReference Include="..\$ext_projectname$.DTO\$ext_projectname$.DTO.csproj" />
</ItemGroup>

您必须在所有需要的用途中执行此操作。

编辑:刚刚在此处的答案中看到了 Vanlalhriata 的评论

于 2021-10-16T13:36:17.210 回答