Skip to content

Enable PowerShell 5.1 / Net472 Test Automation #8503

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Feb 22, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Azure PowerShell specific
Net472Tests/
artifacts/
src/Stack/
src/local-artifacts/*
Expand Down
37 changes: 36 additions & 1 deletion build.proj
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
<LibraryRoot>$(MSBuildThisFileDirectory)</LibraryRoot>
<LibrarySourceFolder>$(LibraryRoot)src</LibrarySourceFolder>
<LibraryToolsFolder>$(LibraryRoot)tools</LibraryToolsFolder>
<LibraryArtifactsFolder>$(LibraryRoot)artifacts</LibraryArtifactsFolder>
<LocalFeedFolder>$(LibraryToolsFolder)\LocalFeed</LocalFeedFolder>
<Configuration Condition=" '$(Configuration)' != 'Release'">Debug</Configuration>
<CodeSign>false</CodeSign>
Expand Down Expand Up @@ -378,6 +379,9 @@
<PropertyGroup Condition="'$(ExcludeAuthenticators)' == 'true'">
<AuthenticatorExclusions>$(LibraryRoot)src/**/Authenticators.csproj;</AuthenticatorExclusions>
</PropertyGroup>
<PropertyGroup Condition="'$(Framework)' == ''">
<Framework>netcoreapp2.0</Framework>
</PropertyGroup>

<CallTarget Targets="BinScopeCheck" Condition="'$(OnPremiseBuild)'" />
<CallTarget Targets="RunPoliCheck" Condition="'$(OnPremiseBuild)'" />
Expand All @@ -397,7 +401,7 @@
<Exec Command="dotnet sln Azure.PowerShell.sln add $(LibraryRoot)tools/ScenarioTest.ResourceManager/ScenarioTest.ResourceManager.csproj $(LibraryRoot)tools/TestFx/TestFx.csproj" />
<!-- https://github.com/Microsoft/msbuild/issues/3157#issuecomment-378002971 -->
<!-- https://github.com/xunit/xunit/issues/1154#issuecomment-405366373 -->
<Exec Command="dotnet test Azure.PowerShell.sln --filter &quot;AcceptanceType=CheckIn%26RunType!=DesktopOnly&quot; --configuration $(Configuration) --framework netcoreapp2.0 --logger trx" />
<Exec Command="dotnet test Azure.PowerShell.sln --filter &quot;AcceptanceType=CheckIn%26RunType!=DesktopOnly&quot; --configuration $(Configuration) --framework $(Framework) --logger trx" />

<ItemGroup>
<TestResults Include="$(LibraryRoot)src/**/TestResults/*.trx" />
Expand All @@ -407,6 +411,37 @@
<OnError ExecuteTargets="TestFailureErrorMessage" />
</Target>

<Target Name="TestNet472">
<Message Importance="high" Text="Running check in tests..." />
<PropertyGroup>
<AuthExclusions>$(LibraryRoot)src/**/Authenticators.csproj;</AuthExclusions>
<AutomationExclusions>$(LibraryRoot)src/**/Automation.Test.csproj;</AutomationExclusions>
<StorageExclusions>$(LibraryRoot)src/**/Storage.Test.csproj;</StorageExclusions>
</PropertyGroup>

<MakeDir Directories="$(TestOutputDirectory)" ContinueOnError="false" />
<Exec Command="dotnet new sln -n Azure.PowerShell --force" />
<ItemGroup>
<ModuleCsprojFiles Include="$(LibraryRoot)src/**/*.csproj" Exclude="$(AuthExclusions);$(AutomationExclusions);$(StorageExclusions)"/>
</ItemGroup>
<!-- https://stackoverflow.com/a/35477012/294804 -->
<ItemGroup>
<ModuleCsprojFilesRelative Include="@(ModuleCsprojFiles)">
<RelativePath>$([MSBuild]::MakeRelative($(LibraryRoot), %(ModuleCsprojFiles.FullPath)))</RelativePath>
</ModuleCsprojFilesRelative>
</ItemGroup>
<Exec Command="dotnet sln Azure.PowerShell.sln add @(ModuleCsprojFilesRelative->'%(RelativePath)', ' ')" />
<Exec Command="dotnet sln Azure.PowerShell.sln add $(LibraryRoot)tools/ScenarioTest.ResourceManager/ScenarioTest.ResourceManager.csproj $(LibraryRoot)tools/TestFx/TestFx.csproj" />
<!-- https://github.com/Microsoft/msbuild/issues/3157#issuecomment-378002971 -->
<!-- https://github.com/xunit/xunit/issues/1154#issuecomment-405366373 -->
<Exec Command="dotnet build Azure.PowerShell.sln --configuration $(Configuration)" />
<Exec Command="dotnet new console -n Net472Tests" />
<Exec Command="dotnet add Net472Tests package xunit.runner.console --version 2.4.0" />
<Exec Command="dotnet restore --packages ./artifacts/tools -f --no-cache Net472Tests" />
<Exec Command="$(PowerShellCommandPrefix) &quot;$(LibraryToolsFolder)/TestNet472Modules.ps1 -TestExecPath '$(LibraryArtifactsFolder)/tools/xunit.runner.console/2.4.0/tools/net472/xunit.console.exe' &quot;" />
<OnError ExecuteTargets="TestFailureErrorMessage" />
</Target>

<Target Name="TestFailureErrorMessage">
<Error Text="Test failures occured, check the files in artifacts/Test" />
</Target>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ function Api-ImportExportWadlTest {

$context = New-AzApiManagementContext -ResourceGroupName $resourceGroupName -ServiceName $serviceName

$wadlPath = Join-Path "$TestOutputRoot" "Resources" "WADLYahoo.xml"
$wadlPath = Join-Path (Join-Path "$TestOutputRoot" "Resources") "WADLYahoo.xml"
$path = "wadlapi"
$wadlApiId = getAssetName

Expand Down Expand Up @@ -198,7 +198,7 @@ function Api-ImportExportSwaggerTest {

$context = New-AzApiManagementContext -ResourceGroupName $resourceGroupName -ServiceName $serviceName

$swaggerPath = Join-Path "$TestOutputRoot" "Resources" "SwaggerPetStoreV2.json"
$swaggerPath = Join-Path (Join-Path "$TestOutputRoot" "Resources") "SwaggerPetStoreV2.json"
$swaggerUrl = "http://petstore.swagger.io/v2/swagger.json"
$path1 = "swaggerapifromFile"
$path2 = "swaggerapifromUrl"
Expand Down Expand Up @@ -254,7 +254,7 @@ function Api-ImportExportWsdlTest {

$context = New-AzApiManagementContext -ResourceGroupName $resourceGroupName -ServiceName $serviceName
$wsdlUrl = "http://fazioapisoap.azurewebsites.net/fazioService.svc?singleWSDL"
$wsdlPath1 = Join-Path "$TestOutputRoot" "Resources" "Weather.wsdl"
$wsdlPath1 = Join-Path (Join-Path "$TestOutputRoot" "Resources") "Weather.wsdl"
$path1 = "soapapifromFile"
$path2 = "soapapifromUrl"
$wsdlApiId1 = getAssetName
Expand Down Expand Up @@ -1091,10 +1091,10 @@ function Policy-CrudTest {

# load from file get to pipeline scenarios

$tenantValidPath = Join-Path "$TestOutputRoot" "Resources" "TenantValidPolicy.xml"
$productValidPath = Join-Path "$TestOutputRoot" "Resources" "ProductValidPolicy.xml"
$apiValidPath = Join-Path "$TestOutputRoot" "Resources" "ApiValidPolicy.xml"
$operationValidPath = Join-Path "$TestOutputRoot" "Resources" "OperationValidPolicy.xml"
$tenantValidPath = Join-Path (Join-Path "$TestOutputRoot" "Resources") "TenantValidPolicy.xml"
$productValidPath = Join-Path (Join-Path "$TestOutputRoot" "Resources") "ProductValidPolicy.xml"
$apiValidPath = Join-Path (Join-Path "$TestOutputRoot" "Resources") "ApiValidPolicy.xml"
$operationValidPath = Join-Path (Join-Path "$TestOutputRoot" "Resources") "OperationValidPolicy.xml"

$context = New-AzApiManagementContext -ResourceGroupName $resourceGroupName -ServiceName $serviceName

Expand Down Expand Up @@ -1285,7 +1285,7 @@ function Certificate-CrudTest {

Assert-AreEqual 0 $certificates.Count

$certPath = Join-Path "$TestOutputRoot" "Resources" "powershelltest.pfx"
$certPath = Join-Path (Join-Path "$TestOutputRoot" "Resources") "powershelltest.pfx"
#[SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine")]
$certPassword = 'Password'
$certSubject = "CN=*.msitesting.net"
Expand Down Expand Up @@ -2122,7 +2122,7 @@ function BackendServiceFabric-CrudTest {

# create certificate
$certId = getAssetName
$certPath = Join-Path "$TestOutputRoot" "Resources" "powershelltest.pfx"
$certPath = Join-Path (Join-Path "$TestOutputRoot" "Resources") "powershelltest.pfx"
#[SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine")]
$certPassword = 'Password'
$certSubject = "CN=*.msitesting.net"
Expand Down Expand Up @@ -2299,7 +2299,7 @@ function ApiRevision-CrudTest {

$context = New-AzApiManagementContext -ResourceGroupName $resourceGroupName -ServiceName $serviceName

$swaggerPath = Join-Path "$TestOutputRoot" "Resources" "SwaggerPetStoreV2.json"
$swaggerPath = Join-Path (Join-Path "$TestOutputRoot" "Resources") "SwaggerPetStoreV2.json"
$path1 = "swaggerapifromFile"
$swaggerApiId1 = getAssetName
$apiRevisionId = "2"
Expand Down
1 change: 1 addition & 0 deletions src/Automation/Automation.Test/Automation.Test.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<PropertyGroup>
<RootNamespace>$(LegacyAssemblyPrefix)$(PsModuleName)$(AzTestAssemblySuffix)</RootNamespace>
<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
<TargetFrameworks>netcoreapp2.0;netcoreapp2.1</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
Expand Down
6 changes: 5 additions & 1 deletion src/Az.Test.props
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

<!-- Build -->
<PropertyGroup>
<TargetFrameworks>netcoreapp2.1;netcoreapp2.0</TargetFrameworks>
<TargetFrameworks>netcoreapp2.1;netcoreapp2.0;netstandard2.0</TargetFrameworks>
<AssemblyName>$(AzAssemblyPrefix)$(PsModuleName)$(AzTestAssemblySuffix)</AssemblyName>
<RootNamespace>$(AzAssemblyPrefix)$(PsModuleName)$(AzTestAssemblySuffix)</RootNamespace>
<IsPackable>false</IsPackable>
Expand All @@ -25,6 +25,10 @@
<DefineConstants>TRACE;RELEASE;NETSTANDARD</DefineConstants>
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

<ItemGroup Condition="'$(IncludeCommonTestProject)' != 'false'">
<ProjectReference Include="$(RepoTools)ScenarioTest.ResourceManager\ScenarioTest.ResourceManager.csproj" />
<ProjectReference Include="$(RepoTools)TestFx\TestFx.csproj" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,13 @@ function Test-AddAzureRmServiceFabricApplicationCertificateRollback
}
Catch [System.Exception]
{
Assert-AreEqual $true ($PSItem.Exception.Message -match 'is different from the location of the VM') "unexpected error message: $($PSItem.Exception.Message)"
$Exception = $PSitem.Exception
while ($Exception.InnerException -ne $null)
{
$Exception = $Exception.InnerException
}

Assert-AreEqual $true ($Exception.Message -match 'is different from the location of the VM') ("unexpected error message: " + $Exception.Message )
$exceptionThrown = $true
}

Expand Down
1 change: 1 addition & 0 deletions src/Storage/Storage.Test/Storage.Test.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

<PropertyGroup>
<RootNamespace>Microsoft.WindowsAzure.Management.$(PsModuleName)$(AzTestAssemblySuffix)</RootNamespace>
<TargetFrameworks>netcoreapp2.0;netcoreapp2.1</TargetFrameworks>
</PropertyGroup>

<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/Websites/Websites.Test/ScenarioTests/Common.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# ----------------------------------------------------------------------------------

$TestOutputRoot = [System.AppDomain]::CurrentDomain.BaseDirectory;
$ResourcesPath = Join-Path $TestOutputRoot "ScenarioTests" "Resources"
$ResourcesPath = Join-Path (Join-Path $TestOutputRoot "ScenarioTests") "Resources"

<#
.SYNOPSIS
Expand Down
4 changes: 2 additions & 2 deletions src/lib/test.net472.config
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
publicKeyToken="30ad4fe6b2a6aeed"
culture="neutral" />
<codeBase version="9.0.0.0"
href="../../../../../../lib/Newtonsoft.Json.9.dll"/>
href="../../../../../lib/Newtonsoft.Json.9.dll"/>
<codeBase version="10.0.0.0"
href="../../../../../../lib/Newtonsoft.Json.10.dll"/>
href="../../../../../lib/Newtonsoft.Json.10.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
Expand Down
25 changes: 9 additions & 16 deletions tools/Common.Netcore.Dependencies.Test.targets
Original file line number Diff line number Diff line change
Expand Up @@ -2,35 +2,28 @@
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OmitJsonPackage>true</OmitJsonPackage>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)\Common.Netcore.Dependencies.targets" />

<ItemGroup Condition="'$(TargetFramework)' != 'net472'">
<PackageReference Include="Microsoft.Azure.Management.ResourceManager" Version="1.9.1-preview" >
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.Test.HttpRecorder" Version="1.13.3" >
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Rest.ClientRuntime.Azure.Authentication" Version="2.3.7" >
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Rest.ClientRuntime.Azure.TestFramework" Version="1.7.6" >
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Management.ResourceManager" Version="1.9.1-preview" />
<PackageReference Include="Microsoft.Azure.Test.HttpRecorder" Version="1.13.3" />
<PackageReference Include="Microsoft.Rest.ClientRuntime.Azure.Authentication" Version="2.3.7" />
<PackageReference Include="Microsoft.Rest.ClientRuntime.Azure.TestFramework" Version="1.7.6" />
<PackageReference Include="xunit" Version="2.4.0" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'net472'">
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<PackageReference Include="xunit.runner.console" Version="2.4.0" />
<PackageReference Include="System.Reflection.TypeExtensions" Version="4.0.0" />
<PackageReference Include="System.Reflection.TypeExtensions" Version="4.3.0" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Management.Automation">
<SpecificVersion>False</SpecificVersion>
<HintPath>$(windir)\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll</HintPath>
</Reference>
<PackageReference Include="Newtonsoft.Json" version="10.0.3" />
<PackageReference Include="Microsoft.Extensions.Primitives" Version="1.1.0" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp2.0'">
Expand Down
68 changes: 18 additions & 50 deletions tools/Common.Netcore.Dependencies.targets
Original file line number Diff line number Diff line change
@@ -1,53 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="'$(TargetFramework)' != 'net472'">
<PackageReference Include="Microsoft.Rest.ClientRuntime" Version="2.3.19">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Rest.ClientRuntime.Azure" Version="3.3.19">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Aks" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Authentication.Abstractions" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Authorization" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Common" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Compute" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Graph.Rbac" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.KeyVault" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Network" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.ResourceManager" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Storage" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Storage.Management" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Strategies" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Websites" Version="1.1.16-preview">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<ItemGroup >
<PackageReference Include="Microsoft.Rest.ClientRuntime" Version="2.3.19"/>
<PackageReference Include="Microsoft.Rest.ClientRuntime.Azure" Version="3.3.19"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Aks" Version="1.1.16-preview"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Authentication.Abstractions" Version="1.1.16-preview"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Authorization" Version="1.1.16-preview"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Common" Version="1.1.16-preview"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Compute" Version="1.1.16-preview"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Graph.Rbac" Version="1.1.16-preview"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.KeyVault" Version="1.1.16-preview"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Network" Version="1.1.16-preview"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.ResourceManager" Version="1.1.16-preview"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Storage" Version="1.1.16-preview"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Storage.Management" Version="1.1.16-preview"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Strategies" Version="1.1.16-preview"/>
<PackageReference Include="Microsoft.Azure.PowerShell.Clients.Websites" Version="1.1.16-preview"/>
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<ItemGroup Condition="'$(IsTestProject)' != 'true'">
<PackageReference Include="Microsoft.ApplicationInsights" Version="2.4.0">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
Expand All @@ -63,8 +33,6 @@
<StorageToolsPath>$(NugetPackageRoot)microsoft.azure.powershell.storage\1.1.16-preview\tools\</StorageToolsPath>
</PropertyGroup>
<ItemGroup Condition="'$(OmitJsonPackage)' != 'true'">
<PackageReference Include="Newtonsoft.Json" Version="10.0.3">
<PrivateAssets Condition="'$(HideReferenceDependencies)' == 'true'">All</PrivateAssets>
</PackageReference>
<PackageReference Include="Newtonsoft.Json" Version="10.0.3"/>
</ItemGroup>
</Project>
Loading