2009-08-03 62 views
0

我试图为Visual Studio创建我自己的类模板,名为“公共类”。我的Visual Studio 2008模板有什么问题?

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

我把PublicClass.zip在下列Windows XP的目录:

C:\ Documents和Settings \我的用户名\我的文档\ Visual Studio 2008的\模板\的ItemTemplate \ Visual C#中。

公共Class.zip包含以下文件:

  1. PublicClass.cs
  2. PublicClass.ico
  3. PublicClass.vstemplate

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> 

我开始了工作室,尝试新的项目添加到我的项目,但我的模板是无处可寻。于是,我跟着的this stackoverflow question命令行的建议,这是叫......

devenv.exe /installvstemplates 

...,但这一切所做的是让所有的模板(包括内置的)消失。经过一段时间的恐慌之后,我最终在多次执行命令后将它们还给了他们,但这显然不是我的答案。

如果您在这里看到我的程序有任何问题,您能否帮我解决问题?

在此先感谢。

编辑:

如果我使用的文件/导出模板(由普里特的建议),模板在我的模板显示出来,但参数不正确地更换。

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

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$,但是这并没有区别。)

这绝对是那些情况下,试图让我的生活更方便一点一人正好有相反的效果:)

+0

你正在关闭VS不是吗? – 2009-08-03 01:58:05

+0

是的。我试着将zip文件移动到不同的文件夹位置。我在工具...验证目录设置正确的选项。 – devuxer 2009-08-03 02:52:27

回答

1

我有这个问题:)

而且我认为我设法解决它,我在做非常相似的是我真正想要的是有一个标准的模板,曾在标题为我们的SVN系统最后我的东西Foo中提取现有Class.zip文件:\ Program Files文件\微软的Visual Studio 9.0 \ Common7 \ IDE \的ItemTemplate \ CSHARP \代码\ 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 $ statement似乎确实有所作为如果我在它们之前有制表符或间隔,他们就不会正确地评估或者更确切地说t嘿确实评价,因为你看到,但只是打印在我的代码。

至于你的模板在你运行/ installvstemplates时会消失,那么最新发生的事情是你可能会注意到cmd需要相当长的时间才能运行,它实际上做的是删除 Foo:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplatesCache,然后通过提取上述原始位置中的zip文件来重建该文件夹。对于这个命令行为的视觉工作室是最好的关闭,而你运行它,你应该等到命令完成重新启动它。 (提示我曾经实际监视文件夹并观看它的构建)。

个人allthough这是一个灵活的系统微软真的可以让这个用户更容易,毕竟R#有这个作为一个简单的右键单击功能,如果你有R#这是最简单的方式来实现模板以外的ms系统。

0

我有问题与手动创建的ZIP文件。除非我做了一个现有模板的导出并改变了它,否则我永远不会看到模板。 These are the instructions

+0

获取模板以显示,但是当我插入模板时,它无法正常工作。在自动生成的vstemplate文件中,ReplaceParameters肯定设置为true,但我的模板中的$ if $`语句和`$ projectname $`声明没有被替换。 – devuxer 2009-08-03 03:27:19

3

如果你想让它在Visual Studio 2008中工作,你必须在你的.vstemplate文件中将<VSTemplate Version="1.0.0">更改为<VSTemplate Version="3.0.0">。然后将.zip文件放在您指定为用户条目模板位置的地方。