我的Visual Studio 2008模板出了什么问题?

时间:2009-08-03 01:37:57

标签: c# visual-studio templates

我正在尝试为Visual Studio创建一个名为“Public Class”的类模板。

我在信中跟着the official MSDN instructions on how to manually create an Item Template,但我没有运气让模板显示在“添加新项目”对话框的“我的模板”部分。

我将PublicClass.zip放在以下Windows XP目录中:

C:\ Documents and Settings \ My User Name \ My Documents \ Visual Studio 2008 \ Templates \ ItemTemplates \ Visual C#。

Public Class.zip包含以下文件:

  1. PublicClass.cs
  2. PublicClass.ico
  3. PublicClass.vstemplate
  4. PublicClass.cs包含...

    using System;
    using System.Collections.Generic;
    $if$ ($targetframeworkversion$ == 3.5)using System.Linq;
    $endif$using System.Text;
    
    namespace Pse.$projectname$
    {
        public class $safeitemname$
        {
        }
    }
    

    PublicClass.vstemplate包含...

    <?xml version="1.0" encoding="utf-8"?>
    <VSTemplate
      Type="Item"
      Version="1.0.0"
      xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
      <TemplateData>
        <Name>Public Class</Name>
        <Description>An empty class declaration with access modifier = public and namespace = Pse.NameOfProject</Description>
        <Icon>PublicClass.ico</Icon>
        <ProjectType>CSharp</ProjectType>
        <DefaultName>PublicClass.cs</DefaultName>
      </TemplateData>
      <TemplateContent>
        <ProjectItem ReplaceParameters="true">PublicClass.cs</ProjectItem>
      </TemplateContent>
    </VSTemplate>
    

    我启动了Studio,试图在我的项目中添加一个新项目,但我的模板无处可寻。所以,我遵循this stackoverflow question的建议,即召唤......

    devenv.exe /installvstemplates
    

    ...来自命令行,但所有这一切都使得所有模板(包括内置模板)都消失了。经过一段时间的恐慌之后,我最终在执行命令几次后将它们取回了,但这显然不适合我。

    如果您在此处看到我的手术有任何问题,可以帮助我吗?

    提前致谢。

    修改

    如果我使用文件/导出模板(由Preet建议),模板 会显示在我的模板中,但参数未正确替换。

    如果我插入一个新的“公共类”,这就是我得到的:

    using System;
    using System.Collections.Generic;
    $if$ (3.5 == 3.5)using System.Linq;
    $endif$using System.Text;
    
    namespace Pse.$projectname$
    {
        public class PublicClass1
        {
        }
    }
    

    因此,只有$projectname$$targetframeworkversion$正在被替换。它没有正确处理$if$语句或$projectname$。 (我也尝试使用$safeprojectname$,但没有区别。)

    这绝对是其中一个尝试让我的生活更方便的情况之一产生了相反的效果:)

3 个答案:

答案 0 :(得分:3)

如果您希望它在Visual Studio 2008中运行,则必须在.vstemplate文件中将<VSTemplate Version="1.0.0">更改为<VSTemplate Version="3.0.0">。然后将.zip文件放在您指定为用户项目模板位置的文件中。

答案 1 :(得分:2)

我有这个问题:)

而且我认为我设法解决了它我正在做的事情非常类似于我真正想要的是有一个标准模板,它有我们的svn系统的标题我最终在Foo中提取现有的Class.zip文件:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplates \ CSharp \ Code \ 1033然后编辑它我最终得到了这个

// $Id$
// $Author$
namespace $rootnamespace$
{
    using System;
    using System.Collections.Generic;
$if$ ($targetframeworkversion$ == 3.5)  using System.Linq;
$endif$    using System.Text;

    public class $safeitemrootname$
    {
    }
}

$ if $语句的间距似乎确实有所不同如果我在它们之前有标签或间隔,它们将无法正确评估,或者更确切地说它们会按照您所看到的进行评估,但只是在我的代码中打印出来。

至于运行/ installvstemplates时你的模板消失了,你可能会注意到cmd需要花费很长时间才能运行,它实际上正在做什么是删除 Foo:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplatesCache然后通过提取原始位置中的zip文件来重建该文件夹,如上所述。对于此命令,在运行它时,最好关闭visual studio,并且应该等到命令完成后重新启动它。 (提示我以前实际监控文件夹并观察它的构建)。

就个人而言,尽管这是一个灵活的系统,微软真的可以让用户更轻松,毕竟R#将其作为一个简单的右键单击功能,如果你有R#,这是实现模板之外的最简单方法ms系统。

答案 2 :(得分:0)

我手动创建的ZIP文件有问题。除非我导出现有模板并更改它,否则我永远不会出现模板。 These are the instructions