在Azure管道yml中指定框架/平台



我想告诉Azure针对我的测试项目实际使用的框架和平台运行测试。据微软称,

可以通过指定适当的目标框架值来执行针对.NET核心框架的测试。

但是我该怎么做呢?

此外,日志输出显示存在不同平台的问题。我也不知道该怎么解决。我试着在yml中加入一个平台,但无济于事。

这是我目前的yml:

- job: Test
dependsOn: SetBuildName
pool:
vmImage: 'windows-2019'
variables:
solution: '**/MyTestSolution.sln'
buildPlatform: 'x86|x64|ARM'
buildConfiguration: 'Release'
appxStagingDir: '$(build.artifactStagingDirectory)AppxPackages\'
steps:
- task: NuGetToolInstaller@1
inputs:
versionSpec: '5.4.0'
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'    
- task: VersionAPPX@2
inputs:
Path: '$(Build.SourcesDirectory)'
VersionNumber: '$(versionNumber)'
InjectVersion: true
OutputVersion: 'OutputedVersion'  
- task: VSBuild@1
inputs:
platform: 'x86'   #Changing this to AnyCPU had no effect.
solution: '$(solution)'
configuration: '$(buildConfiguration)'
msbuildArgs: '/t:Restore'
- task: VSBuild@1
inputs:
platform: 'x86'
solution: '$(solution)'
configuration: '$(buildConfiguration)'
msbuildArgs: '/p:AppxBundlePlatforms="$(buildPlatform)"
/p:AppxPackageDir="$(appxStagingDir)"
/p:AppxBundle=Always
/p:UapAppxPackageBuildMode=Sideload
/p:AppxPackageSigningEnabled=true
/p:VersionPrefix="$(versionNumber)"
/p:VersionSuffix="$(version.SpecialBuild)"
/p:SourceRevisionId="$(Build.SourceVersion)"'

以下是日志摘录:

2020-03-19T12:28:57.5842598Z Test run will use DLL(s) built for framework .NETFramework,Version=v4.0 and platform X86. Following DLL(s) do not match framework/platform settings.
2020-03-19T12:28:57.5843802Z MyProject.Test.dll is built for Framework .NETCoreApp,Version=v3.1 and Platform AnyCPU.

最好的解决方案是告诉它使用项目所针对的任何内容。但如果这不可能,我会选择一种指定NETCoreApp 3.1和AnyCPU的方法。

针对.NET核心框架的测试可以由指定适当的目标框架值。

VSTest@2任务中,有一个参数名为otherConsoleOptions。它可以将一些附加选项传递给工具vstest.console.exe,包括平台框架等。

注意:任务的platfrom参数仅用于报告目的

以下是我在YAML上使用的内容:

- task: VSTest@2
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**ReleaseUnitTestProject1.build.appxrecipe
!***TestAdapter.dll
!**obj**
searchFolder: '$(System.DefaultWorkingDirectory)'
otherConsoleOptions: '/Platform:x86 /Framework:Framework45'
platform: 'x86|x64'

只需根据您的实际需求替换otherConsoleOptions值,如下所示:

otherConsoleOptions: '/Platform:{platform type: x86/x64/ARM} /Framework:{Framwork version}'

上述方法用于在yml文件中进行platform/framwork配置。

但是还有另一种方法可以实现:在runsetting文件中指定platform typeframwork version

<RunSettings>
<!-- Configurations that affect the Test Framework -->
<RunConfiguration>
...
...
<TargetPlatform>x86</TargetPlatform>
<TargetFrameworkVersion>Framework40</TargetFrameworkVersion>
....
....
</RunConfiguration>
...
...
</RunSettings>

最新更新