从控制台应用程序反映到单元测试程序集(System.Reflection.Assembly.GetTypes()
)时,出现了许多文件未找到错误。
我尝试添加一堆软件包,但收效甚微,我不确定这是要走的路。
这是我的项目文件。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FluentAssertions" Version="5.9.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="MSTest.TestAdapter" Version="1.4.0" />
<PackageReference Include="MSTest.TestFramework" Version="1.4.0" />
<PackageReference Include="PossumLabs.Specflow.Core" Version="1.0.0-CI00024" />
<PackageReference Include="PossumLabs.Specflow.Selenium" Version="1.0.0-CI00030" />
<PackageReference Include="Selenium.Chrome.WebDriver" Version="74.0.0" />
<PackageReference Include="Selenium.WebDriver" Version="3.141.0" />
<PackageReference Include="SpecFlow" Version="3.0.225" />
<PackageReference Include="SpecFlow.MsTest" Version="3.0.225" />
<PackageReference Include="SpecFlow.Tools.MsBuild.Generation" Version="3.0.225" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.1" />
</ItemGroup>
</Project>
无法加载文件或程序集 'Microsoft.VisualStudio.TestPlatform.ObjectModel,版本= 11.0.0.0, 文化=中性,PublicKeyToken = b03f5f7f11d50a3a'。系统无法 找到指定的文件。
同样要
Microsoft.VisualStudio.TestPlatform.TestFramework
Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.Interface Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices Microsoft.VisualStudio.TestPlatform.ObjectModel Microsoft.VisualStudio.TestPlatform.TestFramework
我想将它们复制到我的输出文件夹中,以便可以反映到单元测试DLL中。
答案 0 :(得分:0)
没有答案,只是解决方法;
在反映到Microsoft DLL中时发生了这种情况;似乎.net核心反射发生了一些变化,仅盲目地反射文件夹中的每个dll不再安全。通过它们的依赖关系过滤Dll是可能的,如果我缩小范围的话,也可以。但是,即使我加载了每个DLL,GetTypes也会引发如上所述的错误。
过滤方式比过滤掉要查找的DLL要重要。
两者都一样
foreach (string dll in Directory.GetFiles(path, "*.dll"))
assemblies.Add(Assembly.LoadFile(dll));
错误代码:
foreach (var assembly in assemblies)
{}
好的代码:
foreach (var assembly in assemblies.Where(a=>a.GetReferencedAssemblies().Any(x=>x.Name.Contains("YourCompanyNamespace"))))
{}