This repository has been archived by the owner on Aug 1, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 370
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #127 from veena-udayabhanu/preview
Add getting started samples for encryption
- Loading branch information
Showing
32 changed files
with
2,017 additions
and
0 deletions.
There are no files selected for viewing
10 changes: 10 additions & 0 deletions
10
Samples/GettingStarted/EncryptionSamples/BlobGettingStarted/App.config
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<configuration> | ||
<startup> | ||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> | ||
</startup> | ||
<appSettings> | ||
<!--Uncomment the string and insert your storage account name and key in the line below. --> | ||
<!--<add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=[Account Name];AccountKey=[Account Key]" />--> | ||
</appSettings> | ||
</configuration> |
140 changes: 140 additions & 0 deletions
140
Samples/GettingStarted/EncryptionSamples/BlobGettingStarted/BlobGettingStarted.csproj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | ||
<PropertyGroup> | ||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | ||
<ProjectGuid>{6DFB68F9-ECAC-4105-95A7-0A51B840A691}</ProjectGuid> | ||
<OutputType>Exe</OutputType> | ||
<AppDesignerFolder>Properties</AppDesignerFolder> | ||
<RootNamespace>BlobGettingStarted</RootNamespace> | ||
<AssemblyName>BlobGettingStarted</AssemblyName> | ||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> | ||
<FileAlignment>512</FileAlignment> | ||
</PropertyGroup> | ||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||
<PlatformTarget>AnyCPU</PlatformTarget> | ||
<DebugSymbols>true</DebugSymbols> | ||
<DebugType>full</DebugType> | ||
<Optimize>false</Optimize> | ||
<OutputPath>bin\Debug\</OutputPath> | ||
<DefineConstants>DEBUG;TRACE</DefineConstants> | ||
<ErrorReport>prompt</ErrorReport> | ||
<WarningLevel>4</WarningLevel> | ||
</PropertyGroup> | ||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | ||
<PlatformTarget>AnyCPU</PlatformTarget> | ||
<DebugType>pdbonly</DebugType> | ||
<Optimize>true</Optimize> | ||
<OutputPath>bin\Release\</OutputPath> | ||
<DefineConstants>TRACE</DefineConstants> | ||
<ErrorReport>prompt</ErrorReport> | ||
<WarningLevel>4</WarningLevel> | ||
</PropertyGroup> | ||
<ItemGroup> | ||
<Reference Include="Hyak.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Hyak.Common.1.0.2\lib\net45\Hyak.Common.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.Azure.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Azure.Common.2.0.4\lib\net45\Microsoft.Azure.Common.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.Azure.Common.NetFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Azure.Common.2.0.4\lib\net45\Microsoft.Azure.Common.NetFramework.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.Azure.KeyVault, Version=0.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Azure.KeyVault.0.9.1-preview\lib\net45\Microsoft.Azure.KeyVault.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.Azure.KeyVault.Core, Version=0.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Azure.KeyVault.Core.0.9.1-preview\lib\net40\Microsoft.Azure.KeyVault.Core.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.Azure.KeyVault.Extensions, Version=0.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Azure.KeyVault.Extensions.0.9.1-preview\lib\net45\Microsoft.Azure.KeyVault.Extensions.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.Data.Edm, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Data.Edm.5.6.2\lib\net40\Microsoft.Data.Edm.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.Data.OData, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Data.OData.5.6.2\lib\net40\Microsoft.Data.OData.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.Data.Services.Client, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Data.Services.Client.5.6.2\lib\net40\Microsoft.Data.Services.Client.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.168.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.1.8.0.0\lib\net35-full\Microsoft.WindowsAzure.Configuration.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Microsoft.WindowsAzure.Storage, Version=4.4.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\WindowsAzure.Storage.4.4.0-preview\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="System" /> | ||
<Reference Include="System.Core" /> | ||
<Reference Include="System.Net" /> | ||
<Reference Include="System.Net.Http" /> | ||
<Reference Include="System.Net.Http.Extensions, Version=2.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Extensions.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="System.Net.Http.Primitives, Version=4.2.22.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\Microsoft.Net.Http.2.2.22\lib\net45\System.Net.Http.Primitives.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="System.Net.Http.WebRequest" /> | ||
<Reference Include="System.Spatial, Version=5.6.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> | ||
<HintPath>..\packages\System.Spatial.5.6.2\lib\net40\System.Spatial.dll</HintPath> | ||
<Private>True</Private> | ||
</Reference> | ||
<Reference Include="System.Xml.Linq" /> | ||
<Reference Include="System.Data.DataSetExtensions" /> | ||
<Reference Include="Microsoft.CSharp" /> | ||
<Reference Include="System.Data" /> | ||
<Reference Include="System.Xml" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<Compile Include="LocalResolver.cs" /> | ||
<Compile Include="Program.cs" /> | ||
<Compile Include="Properties\AssemblyInfo.cs" /> | ||
</ItemGroup> | ||
<ItemGroup> | ||
<None Include="App.config" /> | ||
<None Include="packages.config" /> | ||
</ItemGroup> | ||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | ||
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" /> | ||
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''"> | ||
<Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" /> | ||
<Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" /> | ||
</Target> | ||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. | ||
Other similar extension points exist, see Microsoft.Common.targets. | ||
<Target Name="BeforeBuild"> | ||
</Target> | ||
<Target Name="AfterBuild"> | ||
</Target> | ||
--> | ||
</Project> |
42 changes: 42 additions & 0 deletions
42
Samples/GettingStarted/EncryptionSamples/BlobGettingStarted/LocalResolver.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
//---------------------------------------------------------------------------------- | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// | ||
// THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, | ||
// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES | ||
// OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. | ||
//---------------------------------------------------------------------------------- | ||
// The example companies, organizations, products, domain names, | ||
// e-mail addresses, logos, people, places, and events depicted | ||
// herein are fictitious. No association with any real company, | ||
// organization, product, domain name, email address, logo, person, | ||
// places, or events is intended or should be inferred. | ||
//---------------------------------------------------------------------------------- | ||
namespace BlobGettingStarted | ||
{ | ||
using Microsoft.Azure.KeyVault.Core; | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
using System.Text; | ||
using System.Threading; | ||
using System.Threading.Tasks; | ||
|
||
public class LocalResolver : IKeyResolver | ||
{ | ||
private Dictionary<string, IKey> keys = new Dictionary<string, IKey>(); | ||
|
||
public void Add(IKey key) | ||
{ | ||
keys[key.Kid] = key; | ||
} | ||
|
||
public async Task<IKey> ResolveKeyAsync(string kid, CancellationToken token) | ||
{ | ||
IKey result; | ||
|
||
keys.TryGetValue(kid, out result); | ||
|
||
return await Task.FromResult(result); | ||
} | ||
} | ||
} |
122 changes: 122 additions & 0 deletions
122
Samples/GettingStarted/EncryptionSamples/BlobGettingStarted/Program.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
//---------------------------------------------------------------------------------- | ||
// Copyright (c) Microsoft Corporation. All rights reserved. | ||
// | ||
// THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, | ||
// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES | ||
// OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. | ||
//---------------------------------------------------------------------------------- | ||
// The example companies, organizations, products, domain names, | ||
// e-mail addresses, logos, people, places, and events depicted | ||
// herein are fictitious. No association with any real company, | ||
// organization, product, domain name, email address, logo, person, | ||
// places, or events is intended or should be inferred. | ||
//---------------------------------------------------------------------------------- | ||
namespace BlobGettingStarted | ||
{ | ||
using Microsoft.Azure.KeyVault; | ||
using Microsoft.Azure.KeyVault.Core; | ||
using Microsoft.WindowsAzure; | ||
using Microsoft.WindowsAzure.Storage; | ||
using Microsoft.WindowsAzure.Storage.Blob; | ||
using System; | ||
using System.IO; | ||
using System.Security.Cryptography; | ||
|
||
/// <summary> | ||
/// Demonstrates how to use encryption with the Azure Blob service. | ||
/// </summary> | ||
public class Program | ||
{ | ||
const string DemoContainer = "democontainer"; | ||
|
||
static void Main(string[] args) | ||
{ | ||
Console.WriteLine("Blob encryption sample"); | ||
|
||
// Retrieve storage account information from connection string | ||
// How to create a storage connection string - http://msdn.microsoft.com/en-us/library/azure/ee758697.aspx | ||
CloudStorageAccount storageAccount = CreateStorageAccountFromConnectionString(CloudConfigurationManager.GetSetting("StorageConnectionString")); | ||
CloudBlobClient client = storageAccount.CreateCloudBlobClient(); | ||
CloudBlobContainer container = client.GetContainerReference(DemoContainer + Guid.NewGuid().ToString("N")); | ||
|
||
try | ||
{ | ||
container.Create(); | ||
int size = 5 * 1024 * 1024; | ||
byte[] buffer = new byte[size]; | ||
|
||
Random rand = new Random(); | ||
rand.NextBytes(buffer); | ||
|
||
CloudBlockBlob blob = container.GetBlockBlobReference("blockblob"); | ||
|
||
// Create the IKey used for encryption. | ||
RsaKey key = new RsaKey("private:key1"); | ||
|
||
// Create the encryption policy to be used for upload. | ||
BlobEncryptionPolicy uploadPolicy = new BlobEncryptionPolicy(key, null); | ||
|
||
// Set the encryption policy on the request options. | ||
BlobRequestOptions uploadOptions = new BlobRequestOptions() { EncryptionPolicy = uploadPolicy }; | ||
|
||
Console.WriteLine("Uploading the encrypted blob."); | ||
|
||
// Upload the encrypted contents to the blob. | ||
using (MemoryStream stream = new MemoryStream(buffer)) | ||
{ | ||
blob.UploadFromStream(stream, size, null, uploadOptions, null); | ||
} | ||
|
||
// Download the encrypted blob. | ||
// For downloads, a resolver can be set up that will help pick the key based on the key id. | ||
LocalResolver resolver = new LocalResolver(); | ||
resolver.Add(key); | ||
|
||
BlobEncryptionPolicy downloadPolicy = new BlobEncryptionPolicy(null, resolver); | ||
|
||
// Set the decryption policy on the request options. | ||
BlobRequestOptions downloadOptions = new BlobRequestOptions() { EncryptionPolicy = downloadPolicy }; | ||
|
||
Console.WriteLine("Downloading the encrypted blob."); | ||
|
||
// Download and decrypt the encrypted contents from the blob. | ||
using (MemoryStream outputStream = new MemoryStream()) | ||
{ | ||
blob.DownloadToStream(outputStream, null, downloadOptions, null); | ||
} | ||
|
||
Console.WriteLine("Press enter key to exit"); | ||
Console.ReadLine(); | ||
} | ||
finally | ||
{ | ||
container.DeleteIfExists(); | ||
} | ||
} | ||
|
||
private static CloudStorageAccount CreateStorageAccountFromConnectionString(string storageConnectionString) | ||
{ | ||
CloudStorageAccount storageAccount; | ||
try | ||
{ | ||
storageAccount = CloudStorageAccount.Parse(storageConnectionString); | ||
} | ||
catch (FormatException) | ||
{ | ||
Console.WriteLine("Invalid storage account information provided. Please confirm the AccountName and AccountKey are valid in the app.config file - then restart the sample."); | ||
Console.WriteLine("Press any key to exit"); | ||
Console.ReadLine(); | ||
throw; | ||
} | ||
catch (ArgumentException) | ||
{ | ||
Console.WriteLine("Invalid storage account information provided. Please confirm the AccountName and AccountKey are valid in the app.config file - then restart the sample."); | ||
Console.WriteLine("Press any key to exit"); | ||
Console.ReadLine(); | ||
throw; | ||
} | ||
|
||
return storageAccount; | ||
} | ||
} | ||
} |
36 changes: 36 additions & 0 deletions
36
Samples/GettingStarted/EncryptionSamples/BlobGettingStarted/Properties/AssemblyInfo.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
using System.Reflection; | ||
using System.Runtime.CompilerServices; | ||
using System.Runtime.InteropServices; | ||
|
||
// General Information about an assembly is controlled through the following | ||
// set of attributes. Change these attribute values to modify the information | ||
// associated with an assembly. | ||
[assembly: AssemblyTitle("BlobGettingStarted")] | ||
[assembly: AssemblyDescription("")] | ||
[assembly: AssemblyConfiguration("")] | ||
[assembly: AssemblyCompany("")] | ||
[assembly: AssemblyProduct("BlobGettingStarted")] | ||
[assembly: AssemblyCopyright("Copyright © 2015")] | ||
[assembly: AssemblyTrademark("")] | ||
[assembly: AssemblyCulture("")] | ||
|
||
// Setting ComVisible to false makes the types in this assembly not visible | ||
// to COM components. If you need to access a type in this assembly from | ||
// COM, set the ComVisible attribute to true on that type. | ||
[assembly: ComVisible(false)] | ||
|
||
// The following GUID is for the ID of the typelib if this project is exposed to COM | ||
[assembly: Guid("66d06292-516c-41b4-9041-aa94b8115119")] | ||
|
||
// Version information for an assembly consists of the following four values: | ||
// | ||
// Major Version | ||
// Minor Version | ||
// Build Number | ||
// Revision | ||
// | ||
// You can specify all the values or you can default the Build and Revision Numbers | ||
// by using the '*' as shown below: | ||
// [assembly: AssemblyVersion("1.0.*")] | ||
[assembly: AssemblyVersion("1.0.0.0")] | ||
[assembly: AssemblyFileVersion("1.0.0.0")] |
20 changes: 20 additions & 0 deletions
20
Samples/GettingStarted/EncryptionSamples/BlobGettingStarted/packages.config
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<packages> | ||
<package id="Hyak.Common" version="1.0.2" targetFramework="net45" /> | ||
<package id="Microsoft.Azure.Common" version="2.0.4" targetFramework="net45" /> | ||
<package id="Microsoft.Azure.Common.Dependencies" version="1.0.0" targetFramework="net45" /> | ||
<package id="Microsoft.Azure.KeyVault" version="0.9.1-preview" targetFramework="net45" /> | ||
<package id="Microsoft.Azure.KeyVault.Core" version="0.9.1-preview" targetFramework="net45" /> | ||
<package id="Microsoft.Azure.KeyVault.Extensions" version="0.9.1-preview" targetFramework="net45" /> | ||
<package id="Microsoft.Bcl" version="1.1.9" targetFramework="net45" /> | ||
<package id="Microsoft.Bcl.Async" version="1.0.168" targetFramework="net45" /> | ||
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" /> | ||
<package id="Microsoft.Data.Edm" version="5.6.2" targetFramework="net45" /> | ||
<package id="Microsoft.Data.OData" version="5.6.2" targetFramework="net45" /> | ||
<package id="Microsoft.Data.Services.Client" version="5.6.2" targetFramework="net45" /> | ||
<package id="Microsoft.Net.Http" version="2.2.22" targetFramework="net45" /> | ||
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="1.8.0.0" targetFramework="net45" /> | ||
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" /> | ||
<package id="System.Spatial" version="5.6.2" targetFramework="net45" /> | ||
<package id="WindowsAzure.Storage" version="4.4.0-preview" targetFramework="net45" /> | ||
</packages> |
Oops, something went wrong.