我编写了一些非常简单的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#项目模板项目。
有没有人更多地了解这个错误及其发生的原因?
答案 0 :(得分:1)
就我而言,答案很简单;错误的占位符名称导致错误。