.net GitLab -找不到'mono'主机

uelo1irk  于 2022-11-19  发布在  .NET
关注(0)|答案(3)|浏览(155)

你好,我正在尝试在GITLAB中使用CI/CD,我是一个漂亮的新手。
我能够创建以下yml文件

# Default image is docker:stable
image: docker:stable

# Define deployment stages
stages:
  - build   

# We use docker-in-docker (dind) for building docker images (build stage)
services:
  - docker:dind

# Build unit test on dotnet core sdk image  
build:
  stage: build
  image: mcr.microsoft.com/dotnet/sdk:5.0
  script:    
    - cd TestRegressionNebra/   
    - dotnet restore "TestRegressionNebra.csproj"
    - dotnet build "TestRegressionNebra.csproj"       
    - 'dotnet test "TestRegressionNebra.csproj" --test-adapter-path:. --logger:"junit;LogFilePath={assembly}-test-result.xml;MethodFormat=Class;FailureBodyFormat=Verbose"'
  artifacts:
        when: always
        paths: 
            - ./**/*test-result.xml
        reports:
            junit: 
                - ./**/*test-result.xml    
  tags:
    - nebra

但是当我运行这个程序时,它给了我这个错误:

/builds/fm/ecommerce/qa/testregression/TestRegressionNebra/bin/Debug/net4.6.1/TestRegressionNebra. dll的测试运行(.NETFramework,版本=v4.6.1)Microsoft(R)测试执行命令行工具版本16.11.0正在启动测试执行,请稍候...共有1个测试文件与指定的模式匹配。System.IO.FileNotFoundException:未能找到“mono”主机。请确保计算机上已安装“mono”,并且在PATH环境变量中可用。at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers.DotnetHostHelper.GetMonoPath()

当我在我的个人电脑上运行相同的命令时,没有发现任何问题。
编辑:附加了我的 *.csproj文件

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
    <TargetFramework>net461</TargetFramework>

    <IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
    <PackageReference Include="JunitXml.TestLogger" Version="3.0.98" />
    <PackageReference Include="NUnit" Version="3.12.0" />
    <PackageReference Include="NUnit3TestAdapter" Version="3.16.1" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
    <PackageReference Include="Selenium.Support" Version="3.141.0" />
    <PackageReference Include="Selenium.WebDriver" Version="3.141.0" />
    <PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="94.0.4606.6100" />
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="5.0.0" />
</ItemGroup>

<ItemGroup>
    <ProjectReference Include="..\Common\Common.csproj" />
</ItemGroup>

<ItemGroup>
    <Reference Include="System.Configuration.Install" />
</ItemGroup>
zrfyljdw

zrfyljdw1#

根据错误消息(和一些注解),您似乎使用了错误类型的跑步机。
GitLab CI/CD是在GitLab Runner上运行的。如果你想运行任何依赖于Windows或Windows软件包的东西,那么你需要install a GitLab Runner on Windows,或者如果你使用的是GitLab.com,那么你需要use the Windows shared runners
您在CI yaml中指定的映像image: mcr.microsoft.com/dotnet/sdk:5.0也需要安装所有依赖项,或者作为script部分的一部分安装必要的依赖项。
我还建议看一下dotnet CI exampledotnet-core CI example。请参阅CI/CD Examples docs page了解更多信息。

dphi5xsq

dphi5xsq2#

当我尝试在Docker Linux容器中运行测试时,使用NUnit3Adapter和VisualStudio 2022 TestExplorer时,我遇到了类似的问题。MS测试框架没有问题,但NUnit搜索mono框架,尽管提供了dotnet for Linux。
知道为什么NUnit测试在适配器中查找mono而不是dotnet吗?
我在项目中使用了多个目标框架,通常是.NET 6.0和.NET Framework 4.72,但对于Linux,我只需要.NET 6.0。
图像库为:mcr.microsoft.com/dotnet/sdk:6.0
错误:
[错误]系统.IO.文件未找到异常:未能找到“mono”主机。请确保计算机上已安装“mono”,并且在PATH环境变量中可用。at Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Helpers.DotnetHostHelper.GetMonoPath(). Visual Studio.测试平台.跨平台引擎.主机.默认测试主机管理器.获取测试主机进程启动信息(1)可枚举的1个源,标识的2个环境变量,测试运行器连接信息连接信息)在微软.VisualStudio.测试平台.跨平台引擎.客户端.代理操作管理器.安装通道(IEnumerable 1个源,字符串运行设置)在Microsoft.VisualStudio.测试平台.交叉平台引擎.客户端.代理发现管理器.发现测试(发现条件发现条件,ITestDiscoveryEventsHandler2事件处理程序)

pcww981p

pcww981p3#

在跨平台项目中,如果在Linux上使用NET 6.0和.NET Framework 4.72,则如果需要在.NET Framework 4.72上进行测试,则必须安装mono。如果在Linux上仅使用NET 6.0,则忽略此警告。

相关问题