【问题标题】:Missing assemblies when reflecting into unit test project反映到单元测试项目时缺少程序集
【发布时间】:2019-09-02 00:33:11
【问题描述】:

从控制台应用程序反映到单元测试程序集 (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 中。

【问题讨论】:

  • 发布与构建有帮助,它不仅缺少 Microsoft.VisualStudio.TestPlatform.ObjectModel
  • 好的,问题是反射代码没有足够狭窄地定位程序集。此错误来自反射到同一文件夹中的 microsoft dll;这引发了负载问题。

标签: c# reflection .net-core mstest


【解决方案1】:

没有答案,只是解决方法;

这发生在反映到 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"))))
        {}

【讨论】:

    猜你喜欢
    • 2014-11-26
    • 2019-04-19
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多