Skip to content

Commit 51cfa61

Browse files
authored
Merge pull request #5234 from Azure/preview
Update websites-preview with latest from preview branch
2 parents e1dbc15 + af4a016 commit 51cfa61

File tree

1,002 files changed

+199313
-116788
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,002 files changed

+199313
-116788
lines changed

.dockerignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@
33

44
# Include the build.
55
!src/Package/Release/ResourceManager/**/*
6-
!src/Package/Debug/ResourceManager/**/*
6+
!src/Package/Debug/ResourceManager/**/*
7+
!tools/InstallationTests/NetcoreTests/**/*

.travis.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
sudo: required
22
language: csharp
33
mono: none
4-
dotnet: 2.0.0
4+
dotnet: 2.1.2
55
dist: trusty
66

77
env:
@@ -13,6 +13,11 @@ services:
1313
before_install:
1414
- sudo apt-get update
1515
- sudo apt-get install docker-ce
16+
- curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
17+
- curl https://packages.microsoft.com/config/ubuntu/14.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list
18+
- sudo apt-get update
19+
- sudo apt-get install -y powershell
20+
- sudo pwsh -NonInteractive -NoLogo -NoProfile -Command "Install-Module platyPS -Force -Confirm:\$false -Scope CurrentUser"
1621

1722
script:
1823
- dotnet msbuild build.proj /t:BuildNetcore /p:Configuration=$CONFIG

Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@ FROM microsoft/powershell
22

33
ARG CONFIG=Release
44

5-
COPY src/Package/${CONFIG}/ResourceManager /usr/local/share/powershell/Modules
5+
COPY src/Package/${CONFIG}/ResourceManager/AzureResourceManager /usr/local/share/powershell/Modules
6+
COPY tools/InstallationTests/NetcoreTests /azpstests

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Below is a table containing the various Azure PowerShell rollup modules found in
1717
| Rollup Module for ARM Cmdlets | `AzureRM` | [![AzureRM](https://img.shields.io/powershellgallery/v/AzureRM.svg?style=flat-square&label=AzureRM)](https://www.powershellgallery.com/packages/AzureRM/) |
1818
| Rollup Module for .NET Core Cmdlets | `AzureRM.Netcore` | [![AzureRM.Netcore](https://img.shields.io/powershellgallery/v/AzureRM.Netcore.svg?style=flat-square&label=AzureRM.Netcore)](https://www.powershellgallery.com/packages/AzureRM.Netcore/) |
1919
| Rollup Module for Administrative Modules in Azure Stack | `AzureStack` | [![AzureStack](https://img.shields.io/powershellgallery/v/AzureStack.svg?style=flat-square&label=AzureStack)](https://www.powershellgallery.com/packages/AzureStack/) |
20-
| Rolledup Module for Service Management Cmdlets | `Azure` | [![Azure](https://img.shields.io/powershellgallery/v/Azure.svg?style=flat-square&label=Azure)](https://www.powershellgallery.com/packages/Azure/) |
20+
| Rollup Module for Service Management Cmdlets | `Azure` | [![Azure](https://img.shields.io/powershellgallery/v/Azure.svg?style=flat-square&label=Azure)](https://www.powershellgallery.com/packages/Azure/) |
2121

2222
## Features
2323

TestMappings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@
4444
"src/ResourceManager/DataLakeStore/": [
4545
".\\src\\ResourceManager\\DataLakeStore\\Commands.DataLakeStore.Test\\bin\\Debug\\Microsoft.Azure.Commands.DataLake.Test.dll"
4646
],
47+
"src/ResourceManager/DataMigration/": [
48+
".\\src\\ResourceManager\\DataMigration\\Commands.DataMigration.Test\\bin\\Debug\\Microsoft.Azure.Commands.DataMigration.Test.dll"
49+
],
4750
"src/ResourceManager/DevTestLabs/": [],
4851
"src/ResourceManager/Dns/": [
4952
".\\src\\ResourceManager\\Dns\\Commands.Dns.Test\\bin\\Debug\\Microsoft.Azure.Commands.Dns.Test.dll"

build.proj

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@
149149
<NuGetLocalBuildTaskPackages>-PackagesDirectory $(LibraryToolsFolder)\BuildPackagesTask\packages</NuGetLocalBuildTaskPackages>
150150

151151
<PowerShellCommand Condition=" '$(PowerShellCommand)' == '' ">C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</PowerShellCommand>
152+
<PowerShellCoreCommand Condition=" '$(PowerShellCoreCommand)' == '' ">pwsh</PowerShellCoreCommand>
152153
</PropertyGroup>
153154

154155
<!--
@@ -271,54 +272,54 @@
271272

272273
<!-- Delete powershell runtime files -->
273274
<ItemGroup>
274-
<RedundantDlls Include="$(PackageDirectory)\**\netcoreapp2.0\publish\Microsoft.Powershell.*.dll" />
275-
<RedundantDlls Include="$(PackageDirectory)\**\netcoreapp2.0\publish\System*.dll"
276-
Exclude="$(PackageDirectory)\**\netcoreapp2.0\publish\System.Security.Cryptography.ProtectedData.dll" />
277-
<RedundantDlls Include="$(PackageDirectory)\**\netcoreapp2.0\publish\Microsoft.VisualBasic.dll" />
278-
<RedundantDlls Include="$(PackageDirectory)\**\netcoreapp2.0\publish\Microsoft.CSharp.dll" />
279-
<RedundantDlls Include="$(PackageDirectory)\**\netcoreapp2.0\publish\Microsoft.CodeAnalysis.dll" />
280-
<RedundantDlls Include="$(PackageDirectory)\**\netcoreapp2.0\publish\Microsoft.CodeAnalysis.CSharp.dll" />
275+
<RedundantDlls Include="$(PackageDirectory)\**\publish\Microsoft.Powershell.*.dll" />
276+
<RedundantDlls Include="$(PackageDirectory)\**\publish\System*.dll"
277+
Exclude="$(PackageDirectory)\**\publish\System.Security.Cryptography.ProtectedData.dll" />
278+
<RedundantDlls Include="$(PackageDirectory)\**\publish\Microsoft.VisualBasic.dll" />
279+
<RedundantDlls Include="$(PackageDirectory)\**\publish\Microsoft.CSharp.dll" />
280+
<RedundantDlls Include="$(PackageDirectory)\**\publish\Microsoft.CodeAnalysis.dll" />
281+
<RedundantDlls Include="$(PackageDirectory)\**\publish\Microsoft.CodeAnalysis.CSharp.dll" />
281282
</ItemGroup>
282283

283284
<Delete Files="@(RedundantDlls->'%(FullPath)')"/>
284285

285-
<!-- Copy content of the publish folder one folders up -->
286+
<!-- Copy content of the publish folder one folder up. -->
286287
<ItemGroup>
287-
<PackageContent Include="$(PackageDirectory)\**\netcoreapp2.0\publish\*.*" />
288+
<PackageContent Include="$(PackageDirectory)\**\publish\*.*" />
288289
<SourceFile Include="@(PackageContent)">
289290
<DestinationFolder>$([System.IO.Path]::Combine('%(RelativeDir)', '..', '%(FileName)%(Extension)'))</DestinationFolder>
290291
</SourceFile>
291292
</ItemGroup>
292293

293294
<Copy SourceFiles="@(SourceFile->'%(FullPath)')" DestinationFiles="@(SourceFile->'%(DestinationFolder)')" SkipUnchangedFiles="true"/>
294295

295-
<!-- Move PSD1 files one folders up -->
296-
<ItemGroup>
297-
<psdFiles Include="$(PackageDirectory)\**\netcoreapp2.0\*.psd1" />
298-
<psdFilesTarget Include="@(psdFiles)">
299-
<DestinationFolder>$([System.IO.Path]::Combine('%(RelativeDir)', '..', '%(FileName)%(Extension)'))</DestinationFolder>
300-
</psdFilesTarget>
301-
</ItemGroup>
302-
303-
<Move SourceFiles="@(psdFilesTarget->'%(FullPath)')" DestinationFiles="@(psdFilesTarget->'%(DestinationFolder)')"/>
304-
305296
<!-- Delete build artifacts -->
306297
<ItemGroup>
307-
<GetAllFiles Include="$(PackageDirectory)\**\netcoreapp2.0\publish\*.*" />
298+
<GetAllFiles Include="$(PackageDirectory)\**\publish\*.*" />
308299
<Artifacts Include="@(GetAllFiles->'%(RootDir)%(Directory)'->Distinct())" />
309300
</ItemGroup>
310301

311302
<RemoveDir Directories="%(Artifacts.Identity)" ContinueOnError="true" />
312303

313304
<ItemGroup>
314-
<ExtraPsdFiles Include="$(PackageDirectory)\$(Configuration)\ResourceManager\AzureRM.Resources.Netcore\AzureRM.Tags.Netcore.psd1" />
315-
<ExtraPsdFiles Include="$(PackageDirectory)\$(Configuration)\ResourceManager\AzureRM.Websites.Netcore\AzureRM.Resources.Netcore.psd1" />
316-
<ExtraPsdFiles Include="$(PackageDirectory)\$(Configuration)\ResourceManager\AzureRM.Websites.Netcore\AzureRM.Tags.Netcore.psd1" />
317-
<ExtraPsdFiles Include="$(PackageDirectory)\$(Configuration)\ResourceManager\AzureRM.Network.Netcore\AzureRM.Resources.Netcore.psd1" />
318-
<ExtraPsdFiles Include="$(PackageDirectory)\$(Configuration)\ResourceManager\AzureRM.Network.Netcore\AzureRM.Tags.Netcore.psd1" />
305+
<ExtraPsdFiles Include="$(PackageDirectory)\$(Configuration)\ResourceManager\AzureResourceManager\AzureRM.Resources.Netcore\AzureRM.Tags.Netcore.psd1" />
306+
<ExtraPsdFiles Include="$(PackageDirectory)\$(Configuration)\ResourceManager\AzureResourceManager\AzureRM.Websites.Netcore\AzureRM.Resources.Netcore.psd1" />
307+
<ExtraPsdFiles Include="$(PackageDirectory)\$(Configuration)\ResourceManager\AzureResourceManager\AzureRM.Websites.Netcore\AzureRM.Tags.Netcore.psd1" />
308+
<ExtraPsdFiles Include="$(PackageDirectory)\$(Configuration)\ResourceManager\AzureResourceManager\AzureRM.Network.Netcore\AzureRM.Resources.Netcore.psd1" />
309+
<ExtraPsdFiles Include="$(PackageDirectory)\$(Configuration)\ResourceManager\AzureResourceManager\AzureRM.Network.Netcore\AzureRM.Tags.Netcore.psd1" />
319310
</ItemGroup>
320311

321312
<Delete Files="@(ExtraPsdFiles->'%(FullPath)')"/>
313+
314+
<!-- Update module manifests. -->
315+
<Exec Command="&quot;$(PowerShellCoreCommand)&quot; -NonInteractive -NoLogo -NoProfile -Command &quot;. $(LibraryToolsFolder)\UpdateModules.ps1 $(Configuration) AzureRM.Netcore -Profile Latest &quot; " Condition="'$(Latest)' == 'true' and '$(CodeSign)' == 'false'"/>
316+
317+
<!-- Generate the help. -->
318+
<Exec Command="&quot;$(PowerShellCoreCommand)&quot; -NonInteractive -NoLogo -NoProfile -Command &quot;Set-Variable -Name ProgressPreference -Value 'SilentlyContinue';. $(LibraryToolsFolder)\GenerateHelp.ps1 -GenerateMamlHelp -BuildConfig $(Configuration) &quot;" ContinueOnError="true" Condition=" '$(SkipHelp)' == 'false' and '$(Latest)' == 'true'"/>
319+
320+
<!-- Cleanup extraneous files. -->
321+
<Exec Command="&quot;$(PowerShellCoreCommand)&quot; -NonInteractive -NoLogo -NoProfile -Command &quot;. $(LibraryToolsFolder)\CleanupBuild.ps1 -BuildConfig $(Configuration) &quot;" />
322+
322323
<CallTarget Targets="CodeSignBinaries" Condition=" '$(CodeSign)' == 'true' " />
323324
</Target>
324325

@@ -368,7 +369,6 @@
368369
<Output TaskParameter="Path" PropertyName="WindowsSdkPath"/>
369370
</GetFrameworkSdkPath>
370371

371-
372372
<Copy SourceFiles="$(LibraryRoot)tools\AzureRM.Netcore\AzureRM.Netcore.psd1"
373373
DestinationFolder="$(LibrarySourceFolder)\Package\$(Configuration)" Condition= " '$(NetCore)' == 'true' "/>
374374

@@ -531,6 +531,9 @@
531531
<!-- Run checkin tests for each pull request -->
532532
<Target Name="Test" DependsOnTargets="BeforeRunTests">
533533
<Message Importance="high" Text="Running check in tests..." />
534+
<!-- Run Pester tests -->
535+
<Exec Command="&quot;$(PowerShellCommand)&quot; -NonInteractive -NoLogo -NoProfile -Command &quot;$(MSBuildProjectDirectory)\tools\Modules\Run-UnitTests.ps1&quot;"
536+
ContinueOnError="ErrorAndContinue"/>
534537
<CallTarget Targets="InvokeXUnit"/>
535538
</Target>
536539

setup/azurecmdfiles.wxi

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,23 @@
516516
<File Id="fil509D1E7494560B2BB3462B8FAD7954CF" KeyPath="yes" Source="$(var.sourceDir)\ResourceManager\AzureResourceManager\AzureRM.DataLakeStore\Microsoft.Azure.Management.DataLake.Store.dll" />
517517
</Component>
518518
</Directory>
519+
<Directory Id="dir737D4AB8FD306B33AFF72CE69894AEC6" Name="AzureRM.DataMigration">
520+
<Component Id="cmpF537AF8D3332C6ECBEC0516187F2220F" Guid="*">
521+
<File Id="fil38B67D67DD39331782A801AB1268A382" KeyPath="yes" Source="$(var.sourceDir)\ResourceManager\AzureResourceManager\AzureRM.DataMigration\AzureRM.DataMigration.psd1" />
522+
</Component>
523+
<Component Id="cmp62BC16A48F4AAB22EAFDB6EA8C458B36" Guid="*">
524+
<File Id="filB3373AF76FB37D674E8110F7B07D406B" KeyPath="yes" Source="$(var.sourceDir)\ResourceManager\AzureResourceManager\AzureRM.DataMigration\AzureRM.DataMigration.psm1" />
525+
</Component>
526+
<Component Id="cmpB20E0977CD0B2DFD15CEFF2F07F39AB9" Guid="*">
527+
<File Id="filBFF0F6B3EE0CADBC6E8D145D70B031BB" KeyPath="yes" Source="$(var.sourceDir)\ResourceManager\AzureResourceManager\AzureRM.DataMigration\Microsoft.Azure.Commands.DataMigration.dll" />
528+
</Component>
529+
<Component Id="cmp8D46A82F0869AFC4C01CACAC464F81E9" Guid="*">
530+
<File Id="fil6EA1FAE6CF33BFDC7C44362C0A050A09" KeyPath="yes" Source="$(var.sourceDir)\ResourceManager\AzureResourceManager\AzureRM.DataMigration\Microsoft.Azure.Commands.DataMigration.dll-Help.xml" />
531+
</Component>
532+
<Component Id="cmp636578DE56B109ECA4CF967ED6BE2823" Guid="*">
533+
<File Id="fil9172B5B303F5B98071CEC5BDA731C87B" KeyPath="yes" Source="$(var.sourceDir)\ResourceManager\AzureResourceManager\AzureRM.DataMigration\Microsoft.Azure.Management.DataMigration.dll" />
534+
</Component>
535+
</Directory>
519536
<Directory Id="dir58E771D29F659E11F33C1EBA94EBEC2D" Name="AzureRM.DevTestLabs">
520537
<Component Id="cmpB88BB2B8DA875D258057401A820E82D6" Guid="*">
521538
<File Id="filE1512C82B1E6F38CDFD909FFD8C61C64" KeyPath="yes" Source="$(var.sourceDir)\ResourceManager\AzureResourceManager\AzureRM.DevTestLabs\AzureRM.DevTestLabs.psd1" />
@@ -3282,6 +3299,11 @@
32823299
<ComponentRef Id="cmp3E5522CBA7172D5BE69D628639359496" />
32833300
<ComponentRef Id="cmp001FEDC74DD7D918EFE88F2EB8E4285C" />
32843301
<ComponentRef Id="cmp3C96010EFA751762A76B66B811613835" />
3302+
<ComponentRef Id="cmpF537AF8D3332C6ECBEC0516187F2220F" />
3303+
<ComponentRef Id="cmp62BC16A48F4AAB22EAFDB6EA8C458B36" />
3304+
<ComponentRef Id="cmpB20E0977CD0B2DFD15CEFF2F07F39AB9" />
3305+
<ComponentRef Id="cmp8D46A82F0869AFC4C01CACAC464F81E9" />
3306+
<ComponentRef Id="cmp636578DE56B109ECA4CF967ED6BE2823" />
32853307
<ComponentRef Id="cmpB88BB2B8DA875D258057401A820E82D6" />
32863308
<ComponentRef Id="cmp727F3C3BF9F149CC43CD2F72DB01F9AF" />
32873309
<ComponentRef Id="cmpCF89ADAF131C4033F0441CD44BD5AFF9" />

src/Common/Commands.Common.Authentication.Test/AuthenticationFactoryTests.cs

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
using Microsoft.WindowsAzure.Commands.ScenarioTest;
2222
using Xunit;
2323
using Microsoft.Azure.Commands.Common.Authentication.Abstractions;
24+
using System.Linq;
2425

2526
namespace Common.Authentication.Test
2627
{
@@ -98,5 +99,55 @@ public void VerifyValidateAuthorityFalseForOnPremise()
9899

99100
Assert.False(((MockAccessTokenProvider)authFactory.TokenProvider).AdalConfiguration.ValidateAuthority);
100101
}
102+
103+
[Fact]
104+
[Trait(Category.AcceptanceType, Category.CheckIn)]
105+
public void CanAuthenticateWithAccessToken()
106+
{
107+
AzureSessionInitializer.InitializeAzureSession();
108+
string tenant = Guid.NewGuid().ToString();
109+
string userId = "[email protected]";
110+
var armToken = Guid.NewGuid().ToString();
111+
var graphToken = Guid.NewGuid().ToString();
112+
var kvToken = Guid.NewGuid().ToString();
113+
var account = new AzureAccount
114+
{
115+
Id = userId,
116+
Type = AzureAccount.AccountType.AccessToken
117+
};
118+
account.SetTenants(tenant);
119+
account.SetAccessToken(armToken);
120+
account.SetProperty(AzureAccount.Property.GraphAccessToken, graphToken);
121+
account.SetProperty(AzureAccount.Property.KeyVaultAccessToken, kvToken);
122+
var authFactory = new AuthenticationFactory();
123+
var environment = AzureEnvironment.PublicEnvironments.Values.First();
124+
var checkArmToken = authFactory.Authenticate(account, environment, tenant, new System.Security.SecureString(), "Never", null);
125+
VerifyToken(checkArmToken, armToken, userId, tenant);
126+
checkArmToken = authFactory.Authenticate(account, environment, tenant, new System.Security.SecureString(), "Never", null, environment.ActiveDirectoryServiceEndpointResourceId);
127+
VerifyToken(checkArmToken, armToken, userId, tenant);
128+
var checkGraphToken = authFactory.Authenticate(account, environment, tenant, new System.Security.SecureString(), "Never", null, AzureEnvironment.Endpoint.GraphEndpointResourceId);
129+
VerifyToken(checkGraphToken, graphToken, userId, tenant);
130+
checkGraphToken = authFactory.Authenticate(account, environment, tenant, new System.Security.SecureString(), "Never", null, environment.GraphEndpointResourceId);
131+
VerifyToken(checkGraphToken, graphToken, userId, tenant);
132+
var checkKVToken = authFactory.Authenticate(account, environment, tenant, new System.Security.SecureString(), "Never", null, environment.AzureKeyVaultServiceEndpointResourceId);
133+
VerifyToken(checkKVToken, kvToken, userId, tenant);
134+
checkKVToken = authFactory.Authenticate(account, environment, tenant, new System.Security.SecureString(), "Never", null, AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId);
135+
VerifyToken(checkKVToken, kvToken, userId, tenant);
136+
}
137+
138+
void VerifyToken(IAccessToken checkToken, string expectedAccessToken, string expectedUserId, string expectedTenant)
139+
{
140+
141+
Assert.True(checkToken is RawAccessToken);
142+
Assert.Equal(expectedAccessToken, checkToken.AccessToken);
143+
Assert.Equal(expectedUserId, checkToken.UserId);
144+
Assert.Equal(expectedTenant, checkToken.TenantId);
145+
checkToken.AuthorizeRequest((type, token) =>
146+
{
147+
Assert.Equal(expectedAccessToken, token);
148+
Assert.Equal("Bearer", type);
149+
});
150+
}
151+
101152
}
102153
}

src/Common/Commands.Common.Authentication.Test/Commands.Common.Authentication.Test.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="..\..\..\packages\xunit.runner.visualstudio.2.1.0\build\net20\xunit.runner.visualstudio.props" Condition="Exists('..\..\..\packages\xunit.runner.visualstudio.2.1.0\build\net20\xunit.runner.visualstudio.props')" />
4-
<Import Project="..\..\..\packages\xunit.core.2.1.0\build\portable-net45+win8+wp8+wpa81\xunit.core.props" Condition="Exists('..\..\..\packages\xunit.core.2.1.0\build\portable-net45+win8+wp8+wpa81\xunit.core.props')" />
3+
<Import Project="..\..\packages\xunit.runner.visualstudio.2.1.0\build\net20\xunit.runner.visualstudio.props" Condition="Exists('..\..\packages\xunit.runner.visualstudio.2.1.0\build\net20\xunit.runner.visualstudio.props')" />
4+
<Import Project="..\..\packages\xunit.core.2.1.0\build\portable-net45+win8+wp8+wpa81\xunit.core.props" Condition="Exists('..\..\packages\xunit.core.2.1.0\build\portable-net45+win8+wp8+wpa81\xunit.core.props')" />
55
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
66
<PropertyGroup>
77
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>

src/Common/Commands.Common.Authentication.Test/packages.config

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@
2020
<package id="xunit.core" version="2.1.0" targetFramework="net45" />
2121
<package id="xunit.extensibility.core" version="2.1.0" targetFramework="net45" />
2222
<package id="xunit.extensibility.execution" version="2.1.0" targetFramework="net45" />
23-
<package id="xunit.runner.visualstudio" version="2.1.0" targetFramework="net45" />
24-
</packages>
23+
<package id="xunit.runner.visualstudio" version="2.1.0" targetFramework="net45" developmentDependency="true" />
24+
</packages>

0 commit comments

Comments
 (0)