【问题标题】:Azure Devops VS Test Failing The system cannot find the file specified.WRN: Assembly binding logging is turned OFFAzure Devops VS 测试失败系统找不到指定的文件。警告:程序集绑定日志记录已关闭
【发布时间】:2020-12-10 14:29:35
【问题描述】:

我的单元测试在本地成功运行,但是当我通过管道中的 VSTest 步骤运行它时,出现以下故障。

抛出异常。 System.IO.FileNotFoundException:System.IO.FileNotFoundException:无法加载文件或程序集“AutoFixture,版本=4.14.0.0,Culture=neutral,PublicKeyToken=b24654c590009d4f”或其依赖项之一。系统找不到指定的文件。警告:程序集绑定日志记录已关闭

抛出异常。 System.IO.FileNotFoundException:System.IO.FileNotFoundException:无法加载文件或程序集“PriceListManagement.Integration,版本=1.0.0.0,文化=中性,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。警告:程序集绑定日志记录已关闭。

(PriceListManagement.Integration 是一个 .Net 框架项目)

关于如何解决这个问题的任何想法? 下面是管道 Yaml

# ASP.NET
# Build and test ASP.NET projects.
# Add steps that publish symbols, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4

trigger:
- main

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    testSelector: 'testAssemblies'
    testAssemblyVer2: |
     **\*UnitTests*.dll
     **\*.IntegrationTests*.dll

【问题讨论】:

  • 你恢复包了吗?请与我们分享您的管道定义。
  • @KrzysztofMadej Pipeline Yaml 添加:)
  • 嗨@RichardWatts。您可以检查以下答案是否可以为您提供帮助。如果没有,您也可以尝试在self-hosted agent 上运行管道并检查它是否可以工作。
  • 嗨@Richard Watts。这张票有什么更新吗?如果答案能给你一些帮助,请随时告诉我。只是提醒this

标签: c# .net azure-devops


【解决方案1】:

无法加载文件或程序集“AutoFixture,版本=4.14.0.0,Culture=neutral,PublicKeyToken=b24654c590009d4f”或其依赖项之一。系统找不到指定的文件。

此问题可能与xxx.csproj 文件中指定的项目依赖关系有关。

您可以检查是否引用了有问题的 .dll 文件(AutoFixture,PriceListManagement.Integration)。

例如:

  <ItemGroup>
    <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\MSTest.TestFramework.2.1.2\lib\net48\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
    </Reference>
  </ItemGroup>

如果是,则需要检查HintPath是否包含目标文件。

对于自动夹具:

可以在package.config文件中指定对应的包

Package.config

<packages>
  <package id="MSTest.TestAdapter" version="1.3.2" targetFramework="net472" />
  <package id="MSTest.TestFramework" version="1.3.2" targetFramework="net472" />
  <package id="AutoFixture" version="4.14.0" targetFramework="net452" />
</packages>

.csproj 文件提示路径:

<HintPath>..\packages\AutoFixture.4.14.0\lib\net452\AutoFixture.dll</HintPath>

对于 PriceListManagement.Integration

由于是项目依赖,需要判断生成的.dll是否在对应路径中。

另一方面,根据您的 yaml 模板,这似乎是一个标准的构建过程。它可以成功运行。

【讨论】:

  • Kevin 非常感谢您的回复,不幸的是它并没有解决我的问题。对于 AutoFixture,“HintPath”中的相对路径是正确的,并且它已经出现在 package.config 中。 PriceListManagement.Integration 的项目引用提示路径看起来也正确,并且它被另一个在管道上运行良好的测试项目引用。我很茫然:-(
【解决方案2】:

问题是我的项目文件指向 .Net Framework 版本 4.6.1 当我将项目文件指向 .Net Framework 4.7.2 版并升级了一些必要的 nugets 时,管道通过了:-)

【讨论】:

  • 太棒了!你可以接受这个答案。这将对其他用户有所帮助。谢谢
猜你喜欢
  • 2013-09-09
  • 1970-01-01
  • 2017-01-15
  • 2013-07-16
  • 1970-01-01
  • 2023-03-16
  • 2020-05-10
  • 1970-01-01
  • 2010-09-20
相关资源
最近更新 更多