VisualStudio ItemTemplate安装错误:值不在预期范围内

时间:2011-04-13 07:08:48

标签: c# visual-studio-2010 templates itemtemplate

我编写了一些非常简单的Visual Studio c#项目模板。模板基于VisualStudio 2010 SDK SP1。除一个项目模板外,一切正常;

经过一些小的改动后,我试图再次将模板应用到已经存在但又空的单元测试项目,并得到以下错误:“值不在预期范围内。”在同一解决方案的某些其他项目中也发生了错误。

恢复项目模板中的更改会导致相同的错误。有些事情似乎被破坏了...经过大量的重建和uninstallAddIn-closeVS-installAddIn-restartVS后,我删除了现有的单元测试项目,并创建了一个新的,与旧的不工作的完全相同,所有工作正常。

这是template.vstemplate文件内容:

<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
  <TemplateData>
    <Name>Tests</Name>
    <Description>No description available</Description>
    <Icon>TestsItems.ico</Icon>
    <TemplateID>662c9d07-0e83-4d4d-87d7-1fcc13667eb8</TemplateID>
    <ProjectType>CSharp</ProjectType>
    <RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
    <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
    <DefaultName>EntityClass.cs</DefaultName>
  </TemplateData>
  <TemplateContent>
        <References>
            <Reference>
                <Assembly>System</Assembly>
            </Reference>
        </References>

    <ProjectItem TargetFileName="Controller/$fileinputname$ControllerTest.cs" ReplaceParameters="true">Controller/ControllerTest.cs</ProjectItem>
    <ProjectItem TargetFileName="Models/$fileinputname$RepositoryTest.cs" ReplaceParameters="true">Models/RepositoryTest.cs</ProjectItem>
  </TemplateContent>
</VSTemplate>

以下是其中一个类文件的内容

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Web.Mvc;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using NUnit.Framework;
using $rootnamespace$.Controllers;
using $rootnamespace$.Models;
using Assert = NUnit.Framework.Assert;
using IgnoreAttribute = Microsoft.VisualStudio.TestTools.UnitTesting.IgnoreAttribute;

namespace $rootnamespace$.Tests.Controllers
{
    /// <summary>
    /// Testclass for the $fileinputname$Controller
    /// </summary>
    [TestClass]
    public class $fileinputname$ControllerTest
    {

    }
}

另外一个注意事项:VSIX项目消耗了C#项目模板项目。

有没有人更多地了解这个错误及其发生的原因?

1 个答案:

答案 0 :(得分:1)

就我而言,答案很简单;错误的占位符名称导致错误。