#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. Отлично! Вы можете принять этот ответ. Это будет полезно другим пользователям. Спасибо