Сбой Azure Devops VS Test Система не может найти указанный файл.WRN: ведение журнала привязки сборки отключено

#c# #.net #azure-devops

#c# #.net #azure-devops

Вопрос:

Мой модульный тест успешно выполняется локально, но когда я запускаю его через шаг VSTest в моем конвейере, я получаю следующий сбой.

возникло исключение. System.IO.FileNotFoundException: System.IO.FileNotFoundException: не удалось загрузить файл или сборку ‘AutoFixture, Version = 4.14.0.0, Culture = neutral, PublicKeyToken = b24654c590009d4f’ или одну из его зависимостей. Система не может найти указанный файл.WRN: ведение журнала привязки сборки отключено

и

возникло исключение. System.IO.FileNotFoundException: System.IO.FileNotFoundException: не удалось загрузить файл или сборку ‘PriceListManagement.Интеграция, версия = 1.0.0.0, Культура = нейтральная, PublicKeyToken = null’ или одна из его зависимостей. Система не может найти указанный файл.WRN: ведение журнала привязки сборки отключено.

(Управление прайс-листом.Интеграция — это .Проект Net framework)

Есть идеи, как это исправить? Pipline 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
 

Комментарии:

1. Вы восстановили пакеты? Пожалуйста, поделитесь с нами своим определением конвейера.

2. @KrzysztofMadej Добавлен конвейерный Yaml 🙂

3. Привет @RichardWatts. Вы можете проверить, может ли приведенный ниже ответ оказать вам некоторую помощь. Если нет, вы также можете попробовать запустить конвейер на самостоятельном агенте и проверить, может ли он работать.

Ответ №1:

Не удалось загрузить файл или сборку ‘AutoFixture, Version = 4.14.0.0, Culture = neutral, PublicKeyToken = b24654c590009d4f’ или одну из его зависимостей. Система не может найти указанный файл.

Эта проблема может быть связана с зависимостями проекта, указанными в xxx.csproj файле.

Вы можете проверить, ссылались ли вы на проблему.dll-файл (автофиксация, управление прайс-листом.Интеграция).

Например:

   <ItemGroup>
    <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..packagesMSTest.TestFramework.2.1.2libnet48Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
    </Reference>
  </ItemGroup>
 

Если да, вам нужно проверить, содержит ли путь к целевому файлу.

Для автоматической фиксации:

Вы можете указать соответствующий пакет в файле 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>..packagesAutoFixture.4.14.0libnet452AutoFixture.dll</HintPath>
 

Для управления прайс-листом.Интеграция

Поскольку это зависимость от проекта, вам необходимо определить, сгенерирован ли.dll находится в соответствующем пути.

С другой стороны, на основе вашего шаблона yaml это, похоже, стандартный процесс сборки. Это может работать успешно.

Комментарии:

1. Кевин Большое спасибо за ответ, к сожалению, он не решил мою проблему. Для автоматической фиксации относительный путь в «HintPath» правильный, и он уже отображается в package.config. Путь ссылки на проект для управления списком цен. Интеграция также выглядит корректно, и на нее ссылается другой тестовый проект, который отлично работает в конвейере. Я в недоумении:-(

Ответ №2:

Проблема заключалась в том, что файлы моего проекта указывали на .Net Framework версии 4.6.1, когда я указал файлы проекта на .Net Framework версии 4.7.2 и обновил некоторые необходимые nugets, переданные конвейером 🙂

Комментарии:

1. Отлично! Вы можете принять этот ответ. Это будет полезно другим пользователям. Спасибо