我有一个简单的自定义插件,它在1月份工作,最近已停止使用以下消息:
“自定义工具错误:生成错误:_PATH_TO_PLUGIN _中缺少[assembly:GeneratorPlugin]属性”
我在这方面经历了另一个stackoverflow问题,但它没有解决问题。
以下是具有该属性并使用Specflow 2.2.1 nuget包构建的插件代码。
[assembly: GeneratorPlugin(typeof(CustomPlugin))]
namespace Tests.SpecFlowPlugin
{
public class CustomPlugin : IGeneratorPlugin
{
public void Initialize(GeneratorPluginEvents generatorPluginEvents, GeneratorPluginParameters generatorPluginParameters)
{
generatorPluginEvents.CustomizeDependencies += GeneratorPluginEvents_CustomizeDependencies;
}
private void GeneratorPluginEvents_CustomizeDependencies(object sender, CustomizeDependenciesEventArgs e)
{
e.ObjectContainer.RegisterTypeAs<IgnoreDecorator, ITestClassTagDecorator>("ignore");
e.ObjectContainer.RegisterTypeAs<IgnoreDecorator, ITestMethodTagDecorator>("ignore");
}
}
}
这是我的部分app.config:
<specFlow>
<unitTestProvider name="MsTest" />
<stepAssemblies>
<stepAssembly assembly="SpecFlow.Assist.Dynamic" />
</stepAssemblies>
<plugins>
<add name="Tests.CustomPlugin" type="Generator"/>
</plugins>
<trace stepDefinitionSkeletonStyle="MethodNameUnderscores" />
</specFlow>
当我在.feature文件上使用运行自定义工具时,这是跟踪:
[16:14:29.3990135]跟踪:为所有类别启用跟踪 [16:14:29.3990135] VsGeneratorServices:发现项目设置 [16:14:29.4065488] VsGeneratorInfoProvider:发现生成器 信息... [16:14:29.4435543] VsGeneratorInfoProvider:运行时 在_SOLUTION_DIR_ \ packages \ SpecFlow.2.2.1 \ lib \ net45中找到 [16:14:29.4445556] VsGeneratorInfoProvider:发现于的发电机 _SOLUTION_DIR_ \包\ SpecFlow.2.2.1 \工具\ TechTalk.SpecFlow.Generator.dll [16:14:29.4450553] RemoteGeneratorServices:创建远程包装器 对于项目的发电机(2.2.0 at _SOLUTION_DIR_ \ packages \ SpecFlow.2.2.1 \ tools)[16:14:29.4810888] RemoteAppDomainTestGeneratorFactory:TestGeneratorFactory: TechTalk.SpecFlow.Generator.TestGeneratorFactory [16:14:29.4810888] RemoteAppDomainTestGeneratorFactory:添加了AssemblyResolve事件 [16:14:29.5071116] RemoteAppDomainTestGeneratorFactory: GeneratorAssemlbyResolveEvent:名称: TechTalk.SpecFlow.RemoteAppDomain,Version = 2017.1.12.0, Culture = neutral,PublicKeyToken = 0778194805d6db41; [16:14:29.5076129] RemoteAppDomainTestGeneratorFactory:GeneratorAssemlbyResolveEvent: 名称:TechTalk.SpecFlow.RemoteAppDomain,Version = 2017.1.12.0, Culture = neutral,PublicKeyToken = 0778194805d6db41; [16:14:29.5436452] RemoteAppDomainTestGeneratorFactory:GeneratorAssemlbyResolveEvent: 名称:TechTalk.SpecFlow.Generator,Version = 2.2.0.0,Culture = neutral, 公钥= 0778194805d6db41; [16:14:29.5486501] RemoteAppDomainTestGeneratorFactory:GeneratorAssemlbyResolveEvent: 名称:TechTalk.SpecFlow.Generator,Version = 2.2.0.0,Culture = neutral, 公钥= 0778194805d6db41; [16:14:29.5496502] RemoteAppDomainTestGeneratorFactory:创建的生成器的AppDomain [16:14:29.5496502] VsGeneratorServices:发现项目设置 [16:14:29.7108192] RemoteAppDomainTestGeneratorFactory: GeneratorAssemlbyResolveEvent:名称:TechTalk.SpecFlow, Version = 2.2.0.0,Culture = neutral,PublicKeyToken = 0778194805d6db41; [16:20:43.6703331] RemoteAppDomainTestGeneratorFactory: GeneratorAssemlbyResolveEvent:名称: Microsoft.TestPlatform.VsTestConsole.TranslationLayer, Version = 15.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a;
奇怪的是,当我使用nuget包目录中的以下命令时,所有功能文件都已正确构建,并且使用完全相同的app.config设置加载插件没有问题。这只在视觉工作室内部出现问题
specflow generateall“_PATH_TO_TEST_PROJECT _”
我尝试更新/重新安装specflow扩展,更新到Specflow 2.3.1,删除缓存,将自定义插件复制到nuget目录等。我不知道它在做什么,但它目前影响我们团队的所有成员尽管它在2个月前正常运行,没有明显的变化影响这一领域或临时更新。