Visual Studio项目模板$ safeitemname $不能按预期工作 [英] Visual studio item template $safeitemname$ not working as expected

查看:82
本文介绍了Visual Studio项目模板$ safeitemname $不能按预期工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个Visual Studio Item模板,以创建一些依赖于容器"文件的文件.

I'm creating a Visual Studio Item template to create a few files which depend on a 'container' file.

最后一个文件<ProjectItem SubType="Code" TargetFileName="$fileinputname$\I$fileinputname$ View.cs" ReplaceParameters="true">Container View.cs</ProjectItem>创建一个需要特定模型类型的视图界面. 但是$safeitemname$ 参数没有按我预期的那样工作.

The last file <ProjectItem SubType="Code" TargetFileName="$fileinputname$\I$fileinputname$ View.cs" ReplaceParameters="true">Container View.cs</ProjectItem> creates a view interface that expects a certain model type. However the $safeitemname$ parameter didn't work as I expected.

输出 Container View.cs 文件:

public interface IIMy_Triplet_View : IView<IMy_Triplet_View_Model>
{
}

预期:

public interface IMy_Triplet_View : IView<My_Triplet_Model>
{
}

这是Container View.cs模板的来源:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WebFormsMvp;

namespace $rootnamespace$
{
    public interface $safeitemname$_View : IView<$safeitemname$_Model>
    {
    }
}

和.vstemplate文件

    <VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
      <TemplateData>
        <DefaultName>Model-View-Presenter</DefaultName>
        <Name>Model-View-Presenter</Name>
        <Description>Creates a model-view-presenter triplet</Description>
        <ProjectType>CSharp</ProjectType>
        <SortOrder>10</SortOrder>
        <Icon>__TemplateIcon.png</Icon>
        <PreviewImage>__PreviewImage.png</PreviewImage>
      </TemplateData>
      <TemplateContent>
        <References>
          <Reference>
            <Assembly>WebFormsMvp</Assembly>
          </Reference>
        </References>
        <ProjectItem SubType="Code" TargetFileName="$fileinputname$" ReplaceParameters="false">Container</ProjectItem>
        <ProjectItem SubType="Code" TargetFileName="$fileinputname$\$fileinputname$ Model.cs" ReplaceParameters="true">Container Model.cs</ProjectItem>
        <ProjectItem SubType="Code" TargetFileName="$fileinputname$\$fileinputname$ Presenter.cs" ReplaceParameters="true">Container Presenter.cs</ProjectItem>
        <ProjectItem SubType="Code" TargetFileName="$fileinputname$\I$fileinputname$ View.cs" ReplaceParameters="true">Container View.cs</ProjectItem>
      </TemplateContent>
    </VSTemplate>

推荐答案

在这里找到解决方案:

Solution found here : http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/8516524a-22d3-4ed2-b2da-aaafe855fb92/

添加CustomParameter(TemplateContent下的最后一项):

Add a CustomParameter (last item under TemplateContent) :

<VSTemplate Version="3.0.0" ... Type="Item">
 <TemplateData>
  ...
 </TemplateData>
 <TemplateContent>
  ...
  <CustomParameters>
   <CustomParameter Name="$basename$" Value="$fileinputname$"/>
  </CustomParameters>
 </TemplateContent>
</VSTemplate>

在文件中使用$ basename $而不是$ fileinputname $.

And use $basename$ in the files instead of $fileinputname$.

这篇关于Visual Studio项目模板$ safeitemname $不能按预期工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆