在我的解决方案中,我有一个项目“ commons”,该项目具有诸如SpecFlow.CustomPlugin之类的引用。当我构建项目时,将生成Com.Org.Commons.dll。 但是,当我将此.dll文件引用到另一个项目时(请查看附件图片solution structure )
具有NUnitPropertyGenerator.cs类的“ SFP”还需要引用CommonFlow项目中已经包含的SpecFlow.CustomPlugin。
我构建了项目Commons,将会生成Com.Org.Commons.dll。但是,当我将Com.Org.Commons.dll包含到SFP项目中时,以下代码给了我错误,并且没有引用Com.Org.Commons.dll。
using TechTalk.SpecFlow.Generator.Plugins;
using TechTalk.SpecFlow.Generator.UnitTestProvider;
using TechTalk.SpecFlow.Infrastructure;
[assembly: GeneratorPlugin(typeof(Com.Org.SFP.CustomNUnitProperties.SpecFlow.NUnitPropertyGenerator))]
namespace Com.Org.SFP.CustomNUnitProperties.SpecFlow
{
public class NUnitPropertyGenerator : IGeneratorPlugin
{
public void Initialize(GeneratorPluginEvents generatorPluginEvents, GeneratorPluginParameters generatorPluginParameters)
{
generatorPluginEvents.CustomizeDependencies += (sender, args) =>
{
args.ObjectContainer.RegisterTypeAs<MasterProvider, IUnitTestGeneratorProvider>();
};
}
}
}
我认为,如果我在内部引用SpecFlow.CustomPlugin包的SFP项目中包含Com.Org.Commons.dll,则会引用TechTalk.SpecFlow。
预期结果应该是:
SFP项目应在包含Com.Org.Commons.dll之后成功构建,并应解决与TechTalk.SpecFlow相关的代码错误。从逻辑上讲,这两个项目都需要SpecFlow.CustomPlugin程序包,但由于我将详细信息实现隔离到commons项目,并且考虑到common项目的依赖项中包含参考包,因此我应该能够在引用Com.Org之后解决SFP项目中的错误。 SFP项目中的Commons.dll。
请找到.csproj文件内容
commons.csproj(https://gist.github.com/gittadesushil/100df50d4de72d61a9d57aa08c82cada) SFP.csproj(https://gist.github.com/gittadesushil/dda1af31b5351f6ef9c71e44e2ceccda)
答案 0 :(得分:0)
如果需要使用在SpecFlow.CustomPlugin
DLL中定义的名称空间/类,则需要在所有直接在代码中使用其类的项目中直接添加对该DLL的引用。例如,TechTalk.SpecFlow.Infrastructure
看起来像SpecFlow.CustomPlugin
中使用的SFP
中的命名空间。在这种情况下,SFP
需要引用SpecFlow.CustomPlugin
如果您没有直接在TechTalk.SpecFlow.Infrastructure
中使用SFP
,那么您要做的就是确保{{1}中的CopyLocal
引用的SpecFlow.CustomPlugins
属性}}设置为true。
答案 1 :(得分:0)
您使用的是普通参考(https://gist.github.com/gittadesushil/dda1af31b5351f6ef9c71e44e2ceccda#file-sfp-csproj-L25),而不是ProjectReference。
正确的是
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net45</TargetFramework>
<RootNamespace>Com.Org.SFP.CustomNUnitProperties.SpecFlow</RootNamespace>
<AssemblyName>Com.Org.SFP.CustomNUnitProperties.SpecFlow.2.4.SpecFlowPlugin</AssemblyName>
<PackageId>$(AssemblyName)</PackageId>
<Description>$(PackageId)</Description>
<OutputPath>$(SolutionDir)Output\</OutputPath>
<DocumentationFile></DocumentationFile>
<IsTool>true</IsTool>
<BuildOutputTargetFolder>tools\SpecFlowPlugin.2-4</BuildOutputTargetFolder>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>full</DebugType>
<DebugSymbols>true</DebugSymbols>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<WarningLevel>0</WarningLevel>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="Com.Org.Commons" />
</ItemGroup>
</Project>
普通引用不会查看依赖关系图。