Quantcast
Channel: Category Name
Viewing all 10804 articles
Browse latest View live

Linux C++ Workload improvements to the Project System, Linux Console Window, rsync and Attach to Process

$
0
0

In Visual Studio 2017 15.7 Preview 1 we have made a number of improvements to our support to the Linux C++ workload based on your feedback. You can learn more about our Linux C++ workload in Visual Studio here.

MSBuild Project System improvements

We added some new properties to Linux projects on the C/C++ General properties page. Max Parallel Compilation Jobs allows you to launch additional compilation processes. The default is 1 but can be increased to improve your build throughput. Public Project Include Directories allows you to specify directories in your project you want exposed to other projects in your solution. In the consuming project, add a reference to the project that exposed its include directories and now you can reference them from your source.

Linux Console Window improvements

Now on launch or debug of a Linux project the Linux console window will be displayed. If you dock this window the position will be remembered on subsequent launches. When you return from debug mode the window will be closed. We also fixed our handling of echo on/off to properly display messages from the remote system.

Rsync improvements for CMake and open folder

Our rsync support in open folder and CMake scenarios has also seen some improvements.  Previously rsync would run to completion even if you had cancelled the task that started it, this has been fixed. If rsync is triggered by a build for example and you cancel the build rsync will now cancel execution.  We’ve also made some performance improvements and enabled rsync with root users. You can also now pass additional command arguments to rsync using the rsyncCommandArgs option in CMakeSettings.json.

Attach to Process improvements

You have given us feedback regarding the need to have more control over the Attach to Process scenario for remote Linux debugging. We’ve added a lot of the controls that are possible through normal debug launch settings for Linux projects or Open Folder, such as enabling child process debugging, pre attach commands, etc. To enable this place a file named Microsoft.MIEngine.Options.xml in the root of your solution or workspace. Here is a simple example

<?xml version="1.0" encoding="utf-8"?>
<SupplementalLaunchOptions>
    <AttachOptions>
      <AttachOptionsForConnection AdditionalSOLibSearchPath="/home/user/solibs">
        <ServerOptions MIDebuggerPath="C:Program Files (x86)Microsoft Visual StudioPreviewEnterpriseCommon7IDEVCLinuxbingdb7.9x86_64-linux-gnu-gdb.exe"
ExePath="C:tempConsoleApplication17ConsoleApplication17binx64DebugConsoleApplication17.out"/>
        <SetupCommands>
          <Command IgnoreFailures="true">-enable-pretty-printing</Command>
        </SetupCommands>
      </AttachOptionsForConnection>
    </AttachOptions>
</SupplementalLaunchOptions>

The AttachOptionsForConnection has most of the attributes you may need. The example above shows passing a location to search for additional .so libraries. The child element ServerOptions enables attaching to the remote process with gdbserver instead. To do that you need to specify a local gdb client (the one shipped in VS is shown above) and a local copy of the binary with symbols. The other child element SetupCommands allows you to pass commands directly to gdb. You can find all the options available in the LaunchOptions.xsd schema, look at the root element for this file of SupplementalLaunchOptions.

What’s next 

Download the Visual Studio 2017 Preview, install the Linux C++ Workload and give it a try with your projects.

The best way to reach us is via our GitHub hosted issue list, directly via mail at vcpplinux-support@microsoft.com or find me on Twitter @robotdad 


C++ Code Analysis Improvements for Visual Studio 2017 15.7 Preview 1

$
0
0

We’re making it easier to configure and use the C++ code analysis features with a set of changes targeting 15.7. In the first 15.7 preview we’ve cleaned up the UI, fixed our documentation links and, most importantly, simplified the way analysis extensions are configured. 

If you’re not familiar with C++ Core Check, it’s a code analysis extension that helps you update your code to be safer and use a more modern style as outlined in the C++ Core Guidelines. You can learn more about the rules we enforce on our reference page.

C++ Core Check Extension on by Default

We wanted to make it easier for developers to take advantage of the new checks from C++ Core Check. Previously if developers wanted to use C++ Core Check with code analysis, they had to explicitly enable the analysis extension for each project. Then, when running analysis, the tools would produce a deluge of Core Check warnings because all C++ Core Check warnings were enabled by default. 

Starting in Preview 1, the C++ Core Check extension is enabled whenever code analysis is run. We also updated the Microsoft Native Recommended Rules and Microsoft Native Minimum Rules to include only the highest impact C++ Core Check warnings (more on that below). We think this provides the best experience: running code analysis on a project “just works” without requiring additional configuration. 

We also removed the UI that was used to configure the analysis extensions because it’s no longer needed. Our goal is to make the ruleset the one-stop configuration file for code analysis. All a developer needs to worry about is which warnings he or she wants to run, and the engine will intelligently enable and disable extensions and checkers based on the ruleset. This feature isn’t fully implemented in Preview 1; the remaining work will ship in an upcoming preview. 

Screenshot showing the previous code analysis extension panel that was removed.

The code analysis extensions selection panel has been removed – extensions will be enabled automatically based on the rules that are enabled.

Screenshot showing that the extension panel was removed.

The code analysis extensions panel was removed from the project properties page in 15.7 preview 1.

Disabling C++ Core Check for a Project

Because this work is still in preview, we added a way to revert to the previous behavior. If the C++ Core Check extension is causing problems with a project, it can be disabled per-project by editing the vcxproj file and adding the following property.

  <PropertyGroup> 
    <EnableCppCoreCheck>false</EnableCppCoreCheck> 
  </PropertyGroup> 

When building from the command line with msbuild, it can also be disabled by passing the property /p:EnableCppCoreCheck=false

If you find you need to disable the extension, we’d like to know about any blocking issues you found. Use the “Send Feedback” button in Visual Studio to report any problems. 

New Rules in Recommended and Minimum Rulesets

Previously the Microsoft Native Recommended and Microsoft Minimum Rulesets had all C++ Core Check warnings enabled by default. This meant if you wanted to try out C++ Core Check and enabled the extension, you’d get a flood of additional warnings. 

To stay consistent with the spirit of the “Recommended” and “Minimum” rulesets, we looked across our internal projects and identified the C++ Core Check rules that helped prevent the most critical bugs. The Recommended and Minimum rulesets still contain the core analyzer rules they had previously and now also contain the high-impact C++ Core Check rules. If you want to run with all the C++ Core Check warnings enabled, you can still choose the “C++ Core Check Rules” ruleset. 

New in Microsoft Native Minimum 

  • C26450 RESULT_OF_ARITHMETIC_OPERATION_PROVABLY_LOSSY
  • C26451 RESULT_OF_ARITHMETIC_OPERATION_CAST_TO_LARGER_SIZE
  • C26452 SHIFT_COUNT_NEGATIVE_OR_TOO_BIG
  • C26453 LEFTSHIFT_NEGATIVE_SIGNED_NUMBER
  • C26454 RESULT_OF_ARITHMETIC_OPERATION_NEGATIVE_UNSIGNED
  • C26495 MEMBER_UNINIT

New in Microsoft Native Recommended

  • All the Minimum rules above
  • C26441 NO_UNNAMED_GUARDS
  • C26444 NO_UNNAMED_RAII_OBJECTS
  • C26498 USE_CONSTEXPR_FOR_FUNCTIONCALL

Screenshot of warning C26498 on sample code.

Simple example of warning C26498 from C++ Core Check.

C++ Core Check Experimental Extension Removed 

Previous versions of Visual Studio included a C++ Core Check (Experimental) option for rules that weren’t quite ready for release. We’ve been updating these rules over several releases and now the rules dealing with raw pointers, owner pointers, and lifetime profile are implemented in the main checker. A few of the experimental rules do not map exactly to new rules and are being deprecated.   

The following experimental rules are deprecated 

  • C26412 DEREF_INVALID_POINTER
  • C26413 DEREF_NULLPTR
  • C26420 ASSIGN_NONOWNER_TO_EXPLICIT_OWNER
  • C26421 ASSIGN_VALID_OWNER
  • C26422 VALID_OWNER_LEAVING_SCOPE
  • C26423 ALLOCATION_NOT_ASSIGNED_TO_OWNER
  • C26424 VALID_ALLOCATION_LEAVING_SCOPE
  • C26425 ASSIGNING_TO_STATIC
  • C26499 NO_LIFETIME_TRACKING

Fit and Finish

We also spent some time fixing some minor bugs to improve the overall C++ code analysis experience. 

  • Clicking on an error navigates to the current documentation page instead of the page for previous versions of Visual Studio. 
  • Removed “Run Code Metrics” from the Analyze menu on projects that don’t support Code Metrics. 
  • C++ Core Check now runs significantly faster and uses up to 50% less memory compared with the 15.6 release.
  • Added a hot key to run code analysis on the current file: Ctrl+Shift+Alt+F7 in the default keyboard mapping.

Wrap Up 

We’re excited to have C++ Core Check on by default and a simpler story for getting our code analysis tools set up for your projects. Hopefully you’ll find the C++ code analysis tools easier to use and the new warnings useful. Download the latest Visual Studio preview and give them a try.

As always, we welcome your feedback. Feel free to send any comments through e-mail at visualcpp@microsoft.com, through Twitter @visualc, or Facebook at Microsoft Visual Cpp. 

If you encounter other problems with MSVC in VS 2017, please let us know via the Report a Problem option, either from the installer or the Visual Studio IDE itself. For suggestions, let us know through UserVoice. Thank you! 

Happy coding.

ClangFormat Support in Visual Studio 2017

$
0
0

Visual Studio 2017 15.7 Preview 1 comes with built-in ClangFormat support for C++ developers. ClangFormat is a utility that makes it easy to style and format your code based on a set of rules that can be configured in a .clang-format or _clang-format file. This file should be present in your source code directory tree, and applies formatting conventions to all code files at the same level or in any sub-folders. It is easily shareable via source control, so you can enforce coding conventions across your whole development team.

Note that Visual Studio also supports EditorConfig, which works in a similar way. ClangFormat, however, has a much larger variety of style options than EditorConfig, including some very C++ specific rules that can be set, and it is already used by C++ developers today.

.clang-format file example

.clang-format file example

You can use multiple ClangFormat files to apply different styling rules at different locations in your codebase, if desired, by placing files in different folders. Any given code file will be styled by the ClangFormat file closest to it in the directory tree. We run the ClangFormat utility in the background to do the formatting, so you get all of ClangFormat’s features right away.

We also provide a way to enforce the built-in formatting conventions that ClangFormat ships with (LLVM, Google, Chromium, Mozilla, or WebKit) without requiring a separate ClangFormat file. This is the same as having the file there with the -style switch set to one of these conventions. This can be configured in Tools > Options.

Using the .clang-format file in the screenshot above, here is a before and after representation of a code sample when Format Document is invoked on it:

Code before the Format Document operation

Code after the Format Document operation

Some of the noticeable changes here include the maximum column width (now set to 50), and the presence of the opening curly brace on the same line as the header preceding it.

How to get started

If you already have a .clang-format or _clang-format file in your codebase, you will notice Visual Studio uses it for formatting immediately, as soon as you make an edit in your code that would trigger a formatting operation. ClangFormat also runs if you run the Format Document (Ctrl+K, Ctrl+D) or Format Selection (Ctrl + K, Ctrl + F) commands from the Edit menu or keyboard shortcuts manually in Visual Studio.

If you don’t already have a sample file to get started with, there is a handy website that features an interactive .clang-format file builder and guide to ClangFormat styling options in general. For the complete list of ClangFormat style options, visit the official documentation.

Tools > Options configuration

There are a number of configurations you can make in Tools > Options to control your ClangFormat experience. You can find them at Tools > Options > Text Editor > C/C++ > Formatting.

ClangFormat Options

ClangFormat settings in Tools > Options

By default, Visual Studio will use any existing ClangFormat file in your source tree for formatting operations. To turn this off, you can uncheck Enable ClangFormat support. By default, ClangFormat will also emulate Visual Studio formatting, reacting to characters like braces ({}) and semicolons to format as you type. You can change this to have it only use ClangFormat for explicit Format Document and Format Selection commands by choosing Run ClangFormat only for manually invoked formatting commands.

The Default formatting style allows you to control your formatting experience if you do not have a .clang-format or _clang-format file in your source tree. We will always prefer that file if it exists, but if we cannot find it, we will use the formatting convention selected in that option. By default, Visual Studio is selected, meaning we do what Visual Studio usually does for formatting and do not run ClangFormat at all. However, you can also specify LLVM, Google, Chromium, Mozilla, or WebKit coding conventions as well. These function the same as having a ClangFormat file with its style property set to one of these options, with no other alterations, so in this case we’re running ClangFormat with just that setting on. So, if you’re using one of these default styles and are not planning on deviating from its rules, make the selection in Tools > Options and you’re good to go without the ClangFormat file.

Give us feedback

This feature is currently out in Preview. Please try it out and let us know if you run into any issues by reporting them via Help > Send Feedback > Report A Problem from inside the Visual Studio IDE. You can view active issues, comment on them and upvote them on Developer Community.

Windows 10 SDK Preview Build 17115 now available

$
0
0

Today, we released a new Windows 10 Preview Build of the SDK to be used in conjunction with Windows 10 Insider Preview (Build 17115 or greater). The Preview SDK Build 17115 contains bug fixes and under development changes to the API surface area.

The Preview SDK can be downloaded from developer section on Windows Insider.

For feedback and updates to the known issues, please see the developer forum. For new developer feature requests, head over to our Windows Platform UserVoice.

Things to note:

  • This build works in conjunction with previously released SDKs and Visual Studio 2017. You can install this SDK and still also continue to submit your apps that target Windows 10 Creators build or earlier to the store.
  • The Windows SDK will now formally only be supported by Visual Studio 2017 and greater. You can download the Visual Studio 2017 here.

Known Issues

What’s New:

  • C++/WinRT Now Available: The C++/WinRT headers and cppwinrt compiler (cppwinrt.exe) are now included in the Windows SDK. The compiler comes in handy if you need to consume a third-party WinRT component or if you need to author your own WinRT components with C++/WinRT. The easiest way to get working with it after installing the Windows Insider Preview SDK is to start the Visual Studio Developer Command Prompt and run the compiler in that environment. Authoring support is currently experimental and subject to change. Stay tuned as we will publish more detailed instructions on how to use the compiler in the coming week. The ModernCPP blog has a deeper dive into the CppWinRT compiler. Please give us feedback by creating an issue at: https://github.com/microsoft/cppwinrt.

Breaking Changes

  • New MIDL key words.

As a part of the “modernizing IDL” effort, several new keywords are added to the midlrt tool. These new keywords will cause build breaks if they are encountered in IDL files.

The new keywords are:

  • event
  • set
  • get
  • partial
  • unsealed
  • overridable
  • protected
  • importwinmd

If any of these keywords is used as an identifier, it will generate a build failure indicating a syntax error.

The error will be similar to:

1 >d:ossrconecorecomcombaseunittestastatestserverstestserver6idlremreleasetest.idl(12) : error MIDL2025 : [msg]syntax error [context]: expecting a declarator or * near “)”

To fix this, modify the identifier in error to an “@” prefix in front of the identifier. That will cause MIDL to treat the offending element as an identifier instead of a keyword.

API Updates and Additions

When targeting new APIs, consider writing your app to be adaptive in order to run correctly on the widest number of Windows 10 devices. Please see Dynamically detecting features with API contracts (10 by 10) for more information.

The following APIs have been added to the platform since the release of 16299.


namespace Windows.AI.MachineLearning.Preview {
  public enum FeatureElementKindPreview
  public interface ILearningModelVariableDescriptorPreview
  public sealed class ImageVariableDescriptorPreview : ILearningModelVariableDescriptorPreview
  public sealed class InferencingOptionsPreview
  public sealed class LearningModelBindingPreview : IIterable<IKeyValuePair<string, object>>, IMapView<string, object>
  public sealed class LearningModelDescriptionPreview
  public enum LearningModelDeviceKindPreview
  public sealed class LearningModelEvaluationResultPreview
  public enum LearningModelFeatureKindPreview
  public sealed class LearningModelPreview
  public sealed class LearningModelVariableDescriptorPreview : ILearningModelVariableDescriptorPreview
  public struct MachineLearningPreviewContract
  public sealed class MapVariableDescriptorPreview : ILearningModelVariableDescriptorPreview
  public sealed class SequenceVariableDescriptorPreview : ILearningModelVariableDescriptorPreview
  public sealed class TensorVariableDescriptorPreview : ILearningModelVariableDescriptorPreview
}
namespace Windows.ApplicationModel {
  public enum AddResourcePackageOptions : uint
  public sealed class AppInstance
  public sealed class PackageCatalog {
    IAsyncOperationWithProgress<PackageCatalogAddResourcePackageResult, PackageInstallProgress> AddResourcePackageAsync(string resourcePackageFamilyName, string resourceID, AddResourcePackageOptions options);
    IAsyncOperation<PackageCatalogRemoveResourcePackagesResult> RemoveResourcePackagesAsync(IIterable<Package> resourcePackages);
  }
  public sealed class PackageCatalogAddResourcePackageResult
  public sealed class PackageCatalogRemoveResourcePackagesResult
  public struct PackageInstallProgress
  public enum StartupTaskState {
    EnabledByPolicy = 4,
  }
}
namespace Windows.ApplicationModel.Activation {
  public enum ActivationKind {
    BarcodeScannerProvider = 1022,
  }
  public sealed class BarcodeScannerPreviewActivatedEventArgs : IActivatedEventArgs, IActivatedEventArgsWithUser, IBarcodeScannerPreviewActivatedEventArgs
  public interface IBarcodeScannerPreviewActivatedEventArgs : IActivatedEventArgs
}
namespace Windows.ApplicationModel.Background {
  public enum BackgroundAccessRequestKind
  public static class BackgroundExecutionManager {
    public static IAsyncOperation<bool> RequestAccessKindAsync(BackgroundAccessRequestKind requestedAccess, string reason);
  }
  public sealed class CustomSystemEventTrigger : IBackgroundTrigger
  public enum CustomSystemEventTriggerRecurrence
  public sealed class MobileBroadbandPcoDataChangeTrigger : IBackgroundTrigger
  public sealed class NetworkOperatorDataUsageTrigger : IBackgroundTrigger
  public sealed class StorageLibraryChangeTrackerTrigger : IBackgroundTrigger
  public sealed class TetheringEntitlementCheckTrigger : IBackgroundTrigger
}
namespace Windows.ApplicationModel.Calls {
  public enum PhoneCallMedia {
    AudioAndRealTimeText = 2,
  }
  public sealed class VoipCallCoordinator {
    VoipPhoneCall RequestNewAppInitiatedCall(string context, string contactName, string contactNumber, string serviceName, VoipPhoneCallMedia media);
    VoipPhoneCall RequestNewIncomingCall(string context, string contactName, string contactNumber, Uri contactImage, string serviceName, Uri brandingImage, string callDetails, Uri ringtone, VoipPhoneCallMedia media, TimeSpan ringTimeout, string contactRemoteId);
  }
  public sealed class VoipPhoneCall {
    void NotifyCallAccepted(VoipPhoneCallMedia media);
  }
}
namespace Windows.ApplicationModel.Core {
  public sealed class AppListEntry {
    IAsyncOperation<bool> LaunchForUserAsync(User user);
  }
}
namespace Windows.ApplicationModel.DataTransfer {
  public sealed class DataPackagePropertySet : IIterable<IKeyValuePair<string, object>>, IMap<string, object> {
    string ContentSourceUserActivityJson { get; set; }
  }
  public sealed class DataPackagePropertySetView : IIterable<IKeyValuePair<string, object>>, IMapView<string, object> {
    string ContentSourceUserActivityJson { get; }
  }
  public static class StandardDataFormats {
    public static string UserActivityJsonArray { get; }
  }
}
namespace Windows.ApplicationModel.Store.Preview {
  public enum StoreSystemFeature {
    ArchitectureArm64 = 34,
  }
}
namespace Windows.ApplicationModel.Store.Preview.InstallControl {
  public sealed class AppInstallItem {
    bool LaunchAfterInstall { get; set; }
  }
  public sealed class AppInstallManager {
    IAsyncOperation<bool> GetIsPackageIdentityAllowedToInstallAsync(string correlationVector, string packageIdentityName, string publisherCertificateName);
    IAsyncOperation<bool> GetIsPackageIdentityAllowedToInstallForUserAsync(User user, string correlationVector, string packageIdentityName, string publisherCertificateName);
    IAsyncOperation<IVectorView<AppInstallItem>> SearchForAllUpdatesAsync(string correlationVector, string clientId, AppUpdateOptions updateOptions);
    IAsyncOperation<IVectorView<AppInstallItem>> SearchForAllUpdatesForUserAsync(User user, string correlationVector, string clientId, AppUpdateOptions updateOptions);
    IAsyncOperation<AppInstallItem> SearchForUpdatesAsync(string productId, string skuId, string correlationVector, string clientId, AppUpdateOptions updateOptions);
    IAsyncOperation<AppInstallItem> SearchForUpdatesForUserAsync(User user, string productId, string skuId, string correlationVector, string clientId, AppUpdateOptions updateOptions);
    IAsyncOperation<IVectorView<AppInstallItem>> StartProductInstallAsync(string productId, string flightId, string clientId, string correlationVector, AppInstallOptions installOptions);
    IAsyncOperation<IVectorView<AppInstallItem>> StartProductInstallForUserAsync(User user, string productId, string flightId, string clientId, string correlationVector, AppInstallOptions installOptions);
  }
  public sealed class AppInstallOptions
  public sealed class AppInstallStatus {
    bool IsStaged { get; }
  }
  public sealed class AppUpdateOptions
}
namespace Windows.ApplicationModel.UserActivities {
  public sealed class UserActivity {
    public UserActivity(string activityId);
    string ToJson();
    public static string ToJsonArray(IIterable<UserActivity> activities);
    public static UserActivity TryParseFromJson(string json);
    public static IVector<UserActivity> TryParseFromJsonArray(string json);
  }
  public sealed class UserActivityChannel {
    public static void DisableAutoSessionCreation();
    IAsyncOperation<IVector<UserActivitySessionHistoryItem>> GetRecentUserActivitiesAsync(int maxUniqueActivities);
    IAsyncOperation<IVector<UserActivitySessionHistoryItem>> GetSessionHistoryItemsForUserActivityAsync(string activityId, DateTime startTime);
    public static UserActivityChannel TryGetForWebAccount(WebAccount account);
  }
  public sealed class UserActivityRequest
  public sealed class UserActivityRequestedEventArgs
  public sealed class UserActivityRequestManager
  public sealed class UserActivitySessionHistoryItem
  public sealed class UserActivityVisualElements {
    string AttributionDisplayText { get; set; }
  }
}
namespace Windows.Devices.Bluetooth {
  public sealed class BluetoothAdapter {
    bool AreClassicSecureConnectionsSupported { get; }
    bool AreLowEnergySecureConnectionsSupported { get; }
  }
  public sealed class BluetoothDevice : IClosable {
    bool WasSecureConnectionUsedForPairing { get; }
  }
  public sealed class BluetoothLEDevice : IClosable {
    bool WasSecureConnectionUsedForPairing { get; }
  }
}
namespace Windows.Devices.Display {
  public sealed class DisplayMonitor
  public enum DisplayMonitorConnectionKind
  public enum DisplayMonitorDescriptorKind
  public enum DisplayMonitorPhysicalConnectorKind
  public enum DisplayMonitorUsageKind
}
namespace Windows.Devices.Input.Preview {
  public enum GazeDeviceConfigurationStatePreview
  public sealed class GazeDevicePreview
  public sealed class GazeDeviceWatcherAddedPreviewEventArgs
  public sealed class GazeDeviceWatcherPreview
  public sealed class GazeDeviceWatcherRemovedPreviewEventArgs
  public sealed class GazeDeviceWatcherUpdatedPreviewEventArgs
  public sealed class GazeEnteredPreviewEventArgs
  public sealed class GazeExitedPreviewEventArgs
  public sealed class GazeInputSourcePreview
  public sealed class GazeMovedPreviewEventArgs
  public sealed class GazePointPreview
}
namespace Windows.Devices.PointOfService {
  public sealed class BarcodeScannerReport {
    public BarcodeScannerReport(uint scanDataType, IBuffer scanData, IBuffer scanDataLabel);
  }
  public sealed class ClaimedBarcodeScanner : IClosable {
    bool IsVideoPreviewShownOnEnable { get; set; }
    void HideVideoPreview();
    IAsyncOperation<bool> ShowVideoPreviewAsync();
  }
  public sealed class UnifiedPosErrorData {
    public UnifiedPosErrorData(string message, UnifiedPosErrorSeverity severity, UnifiedPosErrorReason reason, uint extendedReason);
  }
}
namespace Windows.Devices.PointOfService.Provider {
  public sealed class BarcodeScannerDisableScannerRequest
  public sealed class BarcodeScannerDisableScannerRequestEventArgs
  public sealed class BarcodeScannerEnableScannerRequest
  public sealed class BarcodeScannerEnableScannerRequestEventArgs
  public sealed class BarcodeScannerGetSymbologyAttributesRequest
  public sealed class BarcodeScannerGetSymbologyAttributesRequestEventArgs
  public sealed class BarcodeScannerHideVideoPreviewRequest
  public sealed class BarcodeScannerHideVideoPreviewRequestEventArgs
  public sealed class BarcodeScannerProviderConnection : IClosable
  public sealed class BarcodeScannerProviderTriggerDetails
  public sealed class BarcodeScannerSetActiveSymbologiesRequest
  public sealed class BarcodeScannerSetActiveSymbologiesRequestEventArgs
  public sealed class BarcodeScannerSetSymbologyAttributesRequest
  public sealed class BarcodeScannerSetSymbologyAttributesRequestEventArgs
  public sealed class BarcodeScannerStartSoftwareTriggerRequest
  public sealed class BarcodeScannerStartSoftwareTriggerRequestEventArgs
  public sealed class BarcodeScannerStopSoftwareTriggerRequest
  public sealed class BarcodeScannerStopSoftwareTriggerRequestEventArgs
  public enum BarcodeScannerTriggerState
  public sealed class BarcodeSymbologyAttributesBuilder
}
namespace Windows.Foundation.Numerics {
  public struct Rational
}
namespace Windows.Globalization {
  public static class ApplicationLanguages {
    public static IVectorView<string> GetLanguagesForUser(User user);
  }
  public sealed class Language {
    LanguageLayoutDirection LayoutDirection { get; }
  }
  public enum LanguageLayoutDirection
}
namespace Windows.Graphics {
  public struct DisplayAdapterId
  public interface IGeometrySource2D
}
namespace Windows.Graphics.Capture {
  public sealed class Direct3D11CaptureFrame : IClosable
  public sealed class Direct3D11CaptureFramePool : IClosable
  public sealed class GraphicsCaptureItem
  public sealed class GraphicsCapturePicker
  public sealed class GraphicsCaptureSession : IClosable
}
namespace Windows.Graphics.DirectX {
  public enum DirectXColorSpace
}
namespace Windows.Graphics.Display {
  public sealed class AdvancedColorInfo
  public enum AdvancedColorKind
  public sealed class BrightnessOverrideSettings
  public sealed class ColorOverrideSettings
  public enum DisplayBrightnessOverrideScenario
  public enum DisplayColorOverrideScenario
  public sealed class DisplayEnhancementOverride
  public sealed class DisplayEnhancementOverrideCapabilities
  public sealed class DisplayEnhancementOverrideCapabilitiesChangedEventArgs
  public sealed class DisplayInformation {
    event TypedEventHandler<DisplayInformation, object> AdvancedColorInfoChanged;
    AdvancedColorInfo GetAdvancedColorInfo();
  }
  public enum HdrMetadataFormat
  public struct NitRange
}
namespace Windows.Graphics.Holographic {
  public sealed class HolographicCamera {
    bool CanOverrideViewport { get; }
  }
  public sealed class HolographicCameraPose {
    void OverrideProjectionTransform(HolographicStereoTransform projectionTransform);
    void OverrideViewport(Rect leftViewport, Rect rightViewport);
    void OverrideViewTransform(SpatialCoordinateSystem coordinateSystem, HolographicStereoTransform coordinateSystemToViewTransform);
  }
  public sealed class HolographicFramePresentationMonitor : IClosable
  public sealed class HolographicFramePresentationReport
  public sealed class HolographicSpace {
    HolographicSpaceUserPresence UserPresence { get; }
    event TypedEventHandler<HolographicSpace, object> UserPresenceChanged;
    HolographicFramePresentationMonitor CreateFramePresentationMonitor(uint maxQueuedReports);
    void WaitForNextFrameReady();
    void WaitForNextFrameReadyWithHeadStart(TimeSpan requestedHeadStartDuration);
  }
  public enum HolographicSpaceUserPresence
}
namespace Windows.Graphics.Imaging {
  public enum BitmapPixelFormat {
    P010 = 104,
  }
}
namespace Windows.Graphics.Printing {
  public sealed class PrintPageRange
  public sealed class PrintPageRangeOptions
  public sealed class PrintTaskOptions : IPrintTaskOptionsCore, IPrintTaskOptionsCoreProperties, IPrintTaskOptionsCoreUIConfiguration {
    IVector<PrintPageRange> CustomPageRanges { get; }
    PrintPageRangeOptions PageRangeOptions { get; }
  }
  public static class StandardPrintTaskOptions {
    public static string CustomPageRanges { get; }
  }
}
namespace Windows.Graphics.Printing.OptionDetails {
  public sealed class PrintBindingOptionDetails : IPrintItemListOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public sealed class PrintBorderingOptionDetails : IPrintItemListOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public sealed class PrintCollationOptionDetails : IPrintItemListOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public sealed class PrintColorModeOptionDetails : IPrintItemListOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public sealed class PrintCopiesOptionDetails : IPrintNumberOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public sealed class PrintCustomItemListOptionDetails : IPrintCustomOptionDetails, IPrintItemListOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
    void AddItem(string itemId, string displayName, string description, IRandomAccessStreamWithContentType icon);
  }
  public sealed class PrintCustomTextOptionDetails : IPrintCustomOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public sealed class PrintCustomToggleOptionDetails : IPrintCustomOptionDetails, IPrintOptionDetails
  public sealed class PrintDuplexOptionDetails : IPrintItemListOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public sealed class PrintHolePunchOptionDetails : IPrintItemListOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public sealed class PrintMediaSizeOptionDetails : IPrintItemListOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public sealed class PrintMediaTypeOptionDetails : IPrintItemListOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public enum PrintOptionType {
    Toggle = 4,
  }
  public sealed class PrintOrientationOptionDetails : IPrintItemListOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public sealed class PrintPageRangeOptionDetails : IPrintOptionDetails
  public sealed class PrintQualityOptionDetails : IPrintItemListOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public sealed class PrintStapleOptionDetails : IPrintItemListOptionDetails, IPrintOptionDetails {
    string Description { get; set; }
    string WarningText { get; set; }
  }
  public sealed class PrintTaskOptionDetails : IPrintTaskOptionsCore, IPrintTaskOptionsCoreUIConfiguration {
    PrintCustomToggleOptionDetails CreateToggleOption(string optionId, string displayName);
  }
}
namespace Windows.Management.Deployment {
  public sealed class PackageManager {
    IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> RequestAddPackageAsync(Uri packageUri, IIterable<Uri> dependencyPackageUris, DeploymentOptions deploymentOptions, PackageVolume targetVolume, IIterable<string> optionalPackageFamilyNames, IIterable<Uri> relatedPackageUris, IIterable<Uri> packageUrisToInstall);
  }
}
namespace Windows.Management.Update {
  public sealed class PreviewBuildsManager
  public sealed class PreviewBuildsState
}
namespace Windows.Media {
  public sealed class VideoFrame : IClosable, IMediaFrame {
    IAsyncAction CopyToAsync(VideoFrame frame, IReference<BitmapBounds> sourceBounds, IReference<BitmapBounds> destinationBounds);
    public static VideoFrame CreateAsDirect3D11SurfaceBacked(DirectXPixelFormat format, int width, int height);
    public static VideoFrame CreateAsDirect3D11SurfaceBacked(DirectXPixelFormat format, int width, int height, IDirect3DDevice device);
    public static VideoFrame CreateWithDirect3D11Surface(IDirect3DSurface surface);
    public static VideoFrame CreateWithSoftwareBitmap(SoftwareBitmap bitmap);
  }
}
namespace Windows.Media.Audio {
  public sealed class AudioGraph : IClosable {
    IAsyncOperation<CreateMediaSourceAudioInputNodeResult> CreateMediaSourceAudioInputNodeAsync(MediaSource mediaSource);
    IAsyncOperation<CreateMediaSourceAudioInputNodeResult> CreateMediaSourceAudioInputNodeAsync(MediaSource mediaSource, AudioNodeEmitter emitter);
  }
  public sealed class AudioGraphSettings {
    double MaxPlaybackSpeedFactor { get; set; }
  }
  public sealed class AudioStateMonitor
  public sealed class CreateMediaSourceAudioInputNodeResult
  public sealed class MediaSourceAudioInputNode : IAudioInputNode, IAudioInputNode2, IAudioNode, IClosable
  public enum MediaSourceAudioInputNodeCreationStatus
}
namespace Windows.Media.Capture {
  public sealed class CapturedFrame : IClosable, IContentTypeProvider, IInputStream, IOutputStream, IRandomAccessStream, IRandomAccessStreamWithContentType {
    BitmapPropertySet BitmapProperties { get; }
    CapturedFrameControlValues ControlValues { get; }
  }
  public enum KnownVideoProfile {
    HdrWithWcgPhoto = 8,
    HdrWithWcgVideo = 7,
    HighFrameRate = 5,
    VariablePhotoSequence = 6,
    VideoHdr8 = 9,
  }
  public sealed class MediaCaptureSettings {
    IDirect3DDevice Direct3D11Device { get; }
  }
  public sealed class MediaCaptureVideoProfile {
    IVectorView<MediaFrameSourceInfo> FrameSourceInfos { get; }
    IMapView<Guid, object> Properties { get; }
  }
  public sealed class MediaCaptureVideoProfileMediaDescription {
    IMapView<Guid, object> Properties { get; }
    string Subtype { get; }
  }
}
namespace Windows.Media.Capture.Frames {
  public sealed class AudioMediaFrame
  public sealed class MediaFrameFormat {
    AudioEncodingProperties AudioEncodingProperties { get; }
  }
  public sealed class MediaFrameReference : IClosable {
    AudioMediaFrame AudioMediaFrame { get; }
  }
  public sealed class MediaFrameSourceController {
    AudioDeviceController AudioDeviceController { get; }
  }
  public sealed class MediaFrameSourceInfo {
    string ProfileId { get; }
    IVectorView<MediaCaptureVideoProfileMediaDescription> VideoProfileMediaDescription { get; }
  }
  public enum MediaFrameSourceKind {
    Audio = 4,
    Image = 5,
  }
}
namespace Windows.Media.Core {
  public sealed class AudioStreamDescriptor : IMediaStreamDescriptor, IMediaStreamDescriptor2 {
    AudioStreamDescriptor Copy();
  }
  public sealed class MediaBindingEventArgs {
    void SetDownloadOperation(DownloadOperation downloadOperation);
  }
  public sealed class MediaSource : IClosable, IMediaPlaybackSource {
    DownloadOperation DownloadOperation { get; }
    public static MediaSource CreateFromDownloadOperation(DownloadOperation downloadOperation);
  }
  public sealed class TimedMetadataStreamDescriptor : IMediaStreamDescriptor, IMediaStreamDescriptor2
  public sealed class VideoStreamDescriptor : IMediaStreamDescriptor, IMediaStreamDescriptor2 {
    VideoStreamDescriptor Copy();
  }
}
namespace Windows.Media.Devices {
  public sealed class VideoDeviceController : IMediaDeviceController {
    VideoTemporalDenoisingControl VideoTemporalDenoisingControl { get; }
  }
  public sealed class VideoTemporalDenoisingControl
  public enum VideoTemporalDenoisingMode
}
namespace Windows.Media.DialProtocol {
  public sealed class DialReceiverApp {
    IAsyncOperation<string> GetUniqueDeviceNameAsync();
  }
}
namespace Windows.Media.Effects {
  public sealed class VideoTransformEffectDefinition : IVideoEffectDefinition {
    VideoTransformSphericalProjection SphericalProjection { get; }
  }
  public sealed class VideoTransformSphericalProjection
}
namespace Windows.Media.MediaProperties {
  public sealed class AudioEncodingProperties : IMediaEncodingProperties {
    AudioEncodingProperties Copy();
  }
  public sealed class ContainerEncodingProperties : IMediaEncodingProperties {
    ContainerEncodingProperties Copy();
  }
  public sealed class ImageEncodingProperties : IMediaEncodingProperties {
    ImageEncodingProperties Copy();
  }
  public sealed class MediaEncodingProfile {
    IVector<TimedMetadataStreamDescriptor> GetTimedMetadataTracks();
    void SetTimedMetadataTracks(IIterable<TimedMetadataStreamDescriptor> value);
  }
  public static class MediaEncodingSubtypes {
    public static string P010 { get; }
  }
  public enum MediaPixelFormat {
    P010 = 2,
  }
  public sealed class TimedMetadataEncodingProperties : IMediaEncodingProperties
  public sealed class VideoEncodingProperties : IMediaEncodingProperties {
    VideoEncodingProperties Copy();
  }
}
namespace Windows.Media.Playback {
  public sealed class MediaPlaybackSession {
    MediaRotation PlaybackRotation { get; set; }
    MediaPlaybackSessionOutputDegradationPolicyState GetOutputDegradationPolicyState();
  }
  public sealed class MediaPlaybackSessionOutputDegradationPolicyState
  public enum MediaPlaybackSessionVideoConstrictionReason
  public sealed class MediaPlayer : IClosable {
    AudioStateMonitor AudioStateMonitor { get; }
  }
}
namespace Windows.Media.SpeechSynthesis {
  public enum SpeechAppendedSilence
  public enum SpeechPunctuationSilence
  public sealed class SpeechSynthesizerOptions {
    SpeechAppendedSilence AppendedSilence { get; set; }
    SpeechPunctuationSilence PunctuationSilence { get; set; }
  }
}
namespace Windows.Media.Streaming.Adaptive {
  public sealed class AdaptiveMediaSourceDiagnosticAvailableEventArgs {
    string ResourceContentType { get; }
    IReference<TimeSpan> ResourceDuration { get; }
  }
  public sealed class AdaptiveMediaSourceDownloadCompletedEventArgs {
    string ResourceContentType { get; }
    IReference<TimeSpan> ResourceDuration { get; }
  }
  public sealed class AdaptiveMediaSourceDownloadFailedEventArgs {
    string ResourceContentType { get; }
    IReference<TimeSpan> ResourceDuration { get; }
  }
  public sealed class AdaptiveMediaSourceDownloadRequestedEventArgs {
    string ResourceContentType { get; }
    IReference<TimeSpan> ResourceDuration { get; }
  }
}
namespace Windows.Networking.BackgroundTransfer {
  public sealed class DownloadOperation : IBackgroundTransferOperation, IBackgroundTransferOperationPriority {
    void MakeCurrentInTransferGroup();
  }
  public sealed class UploadOperation : IBackgroundTransferOperation, IBackgroundTransferOperationPriority {
    void MakeCurrentInTransferGroup();
  }
}
namespace Windows.Networking.Connectivity {
  public sealed class CellularApnContext {
    string ProfileName { get; set; }
  }
  public sealed class ConnectionProfileFilter {
    IReference<Guid> PurposeGuid { get; set; }
  }
  public sealed class WwanConnectionProfileDetails {
    WwanNetworkIPKind IPKind { get; }
    IVectorView<Guid> PurposeGuids { get; }
  }
  public enum WwanNetworkIPKind
}
namespace Windows.Networking.NetworkOperators {
  public sealed class ESim
  public sealed class ESimAddedEventArgs
  public enum ESimAuthenticationPreference
  public sealed class ESimDownloadProfileMetadataResult
  public static class ESimManager
  public sealed class ESimOperationResult
  public enum ESimOperationStatus
  public sealed class ESimPolicy
  public sealed class ESimProfile
  public enum ESimProfileClass
  public struct ESimProfileInstallProgress
  public sealed class ESimProfileMetadata
  public enum ESimProfileMetadataState
  public sealed class ESimProfilePolicy
  public enum ESimProfileState
  public sealed class ESimRemovedEventArgs
  public sealed class ESimServiceInfo
  public enum ESimState
  public sealed class ESimUpdatedEventArgs
  public sealed class ESimWatcher
  public enum ESimWatcherStatus
  public sealed class MobileBroadbandAntennaSar {
    public MobileBroadbandAntennaSar(int antennaIndex, int sarBackoffIndex);
  }
  public sealed class MobileBroadbandModem {
    bool IsInEmergencyCallMode { get; }
    event TypedEventHandler<MobileBroadbandModem, object> IsInEmergencyCallModeChanged;
    IAsyncOperation<MobileBroadbandPco> TryGetPcoAsync();
  }
  public sealed class MobileBroadbandModemIsolation
  public sealed class MobileBroadbandPco
  public sealed class MobileBroadbandPcoDataChangeTriggerDetails
  public enum NetworkOperatorDataUsageNotificationKind
  public sealed class NetworkOperatorDataUsageTriggerDetails
  public sealed class TetheringEntitlementCheckTriggerDetails
}
namespace Windows.Networking.Sockets {
  public sealed class MessageWebSocket : IClosable, IWebSocket {
    IAsyncOperationWithProgress<uint, uint> SendFinalFrameAsync(IBuffer data);
    IAsyncOperationWithProgress<uint, uint> SendNonfinalFrameAsync(IBuffer data);
  }
  public sealed class ServerMessageWebSocket : IClosable
  public sealed class ServerMessageWebSocketControl
  public sealed class ServerMessageWebSocketInformation
  public sealed class ServerStreamWebSocket : IClosable
  public sealed class ServerStreamWebSocketInformation
}
namespace Windows.Networking.Vpn {
  public sealed class VpnChannel {
    object CurrentRequestTransportContext { get; }
    void AddAndAssociateTransport(object transport, object context);
    ControlChannelTriggerStatus GetSlotTypeForTransportContext(object context);
    void ReplaceAndAssociateTransport(object transport, object context);
    void StartReconnectingTransport(object transport, object context);
    void StartWithTrafficFilter(IIterable<HostName> assignedClientIpv4Addresses, IIterable<HostName> assignedClientIpv6Addresses, VpnInterfaceId vpninterfaceId, VpnRouteAssignment assignedRoutes, VpnDomainNameAssignment assignedNamespace, uint mtuSize, uint maxFrameSize, bool reserved, IIterable<object> transports, VpnTrafficFilterAssignment assignedTrafficFilters);
  }
  public sealed class VpnPacketBuffer {
    object TransportContext { get; set; }
  }
}
namespace Windows.Security.Authentication.Identity.Provider {
  public enum SecondaryAuthenticationFactorAuthenticationMessage {
    CanceledByUser = 22,
    CenterHand = 23,
    ConnectionRequired = 20,
    DeviceUnavailable = 28,
    MoveHandCloser = 24,
    MoveHandFarther = 25,
    PlaceHandAbove = 26,
    RecognitionFailed = 27,
    TimeLimitExceeded = 21,
  }
}
namespace Windows.Security.Authentication.Web.Core {
  public sealed class FindAllAccountsResult
  public enum FindAllWebAccountsStatus
  public static class WebAuthenticationCoreManager {
    public static IAsyncOperation<FindAllAccountsResult> FindAllAccountsAsync(WebAccountProvider provider);
    public static IAsyncOperation<FindAllAccountsResult> FindAllAccountsAsync(WebAccountProvider provider, string clientId);
    public static IAsyncOperation<WebAccountProvider> FindSystemAccountProviderAsync(string webAccountProviderId);
    public static IAsyncOperation<WebAccountProvider> FindSystemAccountProviderAsync(string webAccountProviderId, string authority);
    public static IAsyncOperation<WebAccountProvider> FindSystemAccountProviderAsync(string webAccountProviderId, string authority, User user);
  }
}
namespace Windows.Security.Authentication.Web.Provider {
  public sealed class WebProviderTokenRequest {
    string ApplicationPackageFamilyName { get; }
    string ApplicationProcessName { get; }
    IAsyncOperation<bool> CheckApplicationForCapabilityAsync(string capabilityName);
  }
}
namespace Windows.Security.Credentials {
  public sealed class WebAccountProvider {
    bool IsSystemProvider { get; }
  }
}
namespace Windows.Services.Maps {
  public sealed class MapRouteDrivingOptions {
    IReference<DateTime> DepartureTime { get; set; }
  }
  public sealed class PlaceInfo {
    public static PlaceInfo CreateFromAddress(string displayAddress);
    public static PlaceInfo CreateFromAddress(string displayAddress, string displayName);
  }
}
namespace Windows.Services.Store {
  public sealed class StoreCanAcquireLicenseResult
  public enum StoreCanLicenseStatus
  public sealed class StoreContext {
    bool CanSilentlyDownloadStorePackageUpdates { get; }
    IAsyncOperation<StoreCanAcquireLicenseResult> CanAcquireStoreLicenseAsync(string productStoreId);
    IAsyncOperation<StoreCanAcquireLicenseResult> CanAcquireStoreLicenseForOptionalPackageAsync(Package optionalPackage);
    IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> DownloadAndInstallStorePackagesAsync(IIterable<string> storeIds);
    IAsyncOperation<IVectorView<StoreQueueItem>> GetAssociatedStoreQueueItemsAsync();
    IAsyncOperation<StoreProductQueryResult> GetStoreProductsAsync(IIterable<string> productKinds, IIterable<string> storeIds, StoreProductOptions storeProductOptions);
    IAsyncOperation<IVectorView<StoreQueueItem>> GetStoreQueueItemsAsync(IIterable<string> storeIds);
    IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> RequestDownloadAndInstallStorePackagesAsync(IIterable<string> storeIds, StorePackageInstallOptions storePackageInstallOptions);
    IAsyncOperation<StoreUninstallStorePackageResult> RequestUninstallStorePackageAsync(Package package);
    IAsyncOperation<StoreUninstallStorePackageResult> RequestUninstallStorePackageByStoreIdAsync(string storeId);
    IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> TrySilentDownloadAndInstallStorePackageUpdatesAsync(IIterable<StorePackageUpdate> storePackageUpdates);
    IAsyncOperationWithProgress<StorePackageUpdateResult, StorePackageUpdateStatus> TrySilentDownloadStorePackageUpdatesAsync(IIterable<StorePackageUpdate> storePackageUpdates);
    IAsyncOperation<StoreUninstallStorePackageResult> UninstallStorePackageAsync(Package package);
    IAsyncOperation<StoreUninstallStorePackageResult> UninstallStorePackageByStoreIdAsync(string storeId);
  }
  public sealed class StorePackageInstallOptions
  public sealed class StorePackageUpdateResult {
    IVectorView<StoreQueueItem> StoreQueueItems { get; }
  }
  public sealed class StoreProductOptions
  public sealed class StoreQueueItem
  public sealed class StoreQueueItemCompletedEventArgs
  public enum StoreQueueItemExtendedState
  public enum StoreQueueItemKind
  public enum StoreQueueItemState
  public sealed class StoreQueueItemStatus
  public sealed class StoreUninstallStorePackageResult
  public enum StoreUninstallStorePackageStatus
}
namespace Windows.Storage {
  public sealed class StorageFolder : IStorageFolder, IStorageFolder2, IStorageFolderQueryOperations, IStorageItem, IStorageItem2, IStorageItemProperties, IStorageItemProperties2, IStorageItemPropertiesWithProvider {
    StorageLibraryChangeTracker TryGetChangeTracker();
  }
}
namespace Windows.Storage.Provider {
  public interface IStorageProviderUriSource
  public sealed class StorageProviderGetContentInfoForPathResult
  public sealed class StorageProviderGetPathForContentUriResult
  public enum StorageProviderUriSourceStatus
}
namespace Windows.Storage.Search {
  public sealed class StorageLibraryChangeTrackerTriggerDetails
}
namespace Windows.System {
  public sealed class AppActivationResult
  public sealed class AppDiagnosticInfo {
    IAsyncOperation<AppActivationResult> LaunchAsync();
  }
  public sealed class AppExecutionStateChangeResult
  public sealed class AppResourceGroupInfo {
    IAsyncOperation<AppExecutionStateChangeResult> StartResumeAsync();
    IAsyncOperation<AppExecutionStateChangeResult> StartSuspendAsync();
    IAsyncOperation<AppExecutionStateChangeResult> StartTerminateAsync();
  }
  public enum AutoUpdateTimeZoneStatus
  public static class TimeZoneSettings {
    public static IAsyncOperation<AutoUpdateTimeZoneStatus> AutoUpdateTimeZoneAsync(TimeSpan timeout);
  }
}
namespace Windows.System.Diagnostics {
  public sealed class DiagnosticInvoker {
    IAsyncOperationWithProgress<DiagnosticActionResult, DiagnosticActionState> RunDiagnosticActionFromStringAsync(string context);
  }
}
namespace Windows.System.Diagnostics.DevicePortal {
  public sealed class DevicePortalConnection {
    ServerMessageWebSocket GetServerMessageWebSocketForRequest(HttpRequestMessage request);
    ServerMessageWebSocket GetServerMessageWebSocketForRequest(HttpRequestMessage request, SocketMessageType messageType, string protocol);
    ServerMessageWebSocket GetServerMessageWebSocketForRequest(HttpRequestMessage request, SocketMessageType messageType, string protocol, uint outboundBufferSizeInBytes, uint maxMessageSize, MessageWebSocketReceiveMode receiveMode);
    ServerStreamWebSocket GetServerStreamWebSocketForRequest(HttpRequestMessage request);
    ServerStreamWebSocket GetServerStreamWebSocketForRequest(HttpRequestMessage request, string protocol, uint outboundBufferSizeInBytes, bool noDelay);
  }
  public sealed class DevicePortalConnectionRequestReceivedEventArgs {
    bool IsWebSocketUpgradeRequest { get; }
    IVectorView<string> WebSocketProtocolsRequested { get; }
    Deferral GetDeferral();
  }
}
namespace Windows.System.Inventory {
  public sealed class InstalledDesktopApp : IStringable
}
namespace Windows.System.Profile {
  public static class AnalyticsInfo {
    public static IAsyncOperation<IMapView<string, string>> GetSystemPropertiesAsync(IIterable<string> attributeNames);
  }
}
namespace Windows.System.RemoteSystems {
  public sealed class RemoteSystem {
    RemoteSystemPlatform Platform { get; }
  }
  public sealed class RemoteSystemEnumerationCompletedEventArgs
  public enum RemoteSystemPlatform
  public sealed class RemoteSystemWatcher {
    event TypedEventHandler<RemoteSystemWatcher, RemoteSystemEnumerationCompletedEventArgs> EnumerationCompleted;
    event TypedEventHandler<RemoteSystemWatcher, RemoteSystemWatcherErrorOccurredEventArgs> ErrorOccurred;
  }
  public enum RemoteSystemWatcherError
  public sealed class RemoteSystemWatcherErrorOccurredEventArgs
}
namespace Windows.System.UserProfile {
  public static class GlobalizationPreferences {
    public static GlobalizationPreferencesForUser GetForUser(User user);
  }
  public sealed class GlobalizationPreferencesForUser
}
namespace Windows.UI.ApplicationSettings {
  public sealed class AccountsSettingsPane {
    public static IAsyncAction ShowAddAccountForUserAsync(User user);
    public static IAsyncAction ShowManageAccountsForUserAsync(User user);
  }
  public sealed class AccountsSettingsPaneCommandsRequestedEventArgs {
    User User { get; }
  }
}
namespace Windows.UI.Composition {
  public sealed class AnimationController : CompositionObject
  public enum AnimationControllerProgressBehavior
  public sealed class BounceScalarNaturalMotionAnimation : ScalarNaturalMotionAnimation
  public sealed class BounceVector2NaturalMotionAnimation : Vector2NaturalMotionAnimation
  public sealed class BounceVector3NaturalMotionAnimation : Vector3NaturalMotionAnimation
  public sealed class CompositionContainerShape : CompositionShape
  public sealed class CompositionEllipseGeometry : CompositionGeometry
  public class CompositionGeometry : CompositionObject
  public class CompositionLight : CompositionObject {
    bool IsEnabled { get; set; }
  }
  public sealed class CompositionLineGeometry : CompositionGeometry
  public class CompositionObject : IClosable {
    AnimationController TryGetAnimationController(string propertyName);
  }
  public sealed class CompositionPath : IGeometrySource2D
  public sealed class CompositionPathGeometry : CompositionGeometry
  public sealed class CompositionRectangleGeometry : CompositionGeometry
  public sealed class CompositionRoundedRectangleGeometry : CompositionGeometry
  public class CompositionShape : CompositionObject
  public sealed class CompositionShapeCollection : CompositionObject, IIterable<CompositionShape>, IVector<CompositionShape>
  public sealed class CompositionSpriteShape : CompositionShape
  public enum CompositionStrokeCap
  public sealed class CompositionStrokeDashArray : CompositionObject, IIterable<float>, IVector<float>
  public enum CompositionStrokeLineJoin
  public sealed class CompositionViewBox : CompositionObject
  public sealed class Compositor : IClosable {
    string Comment { get; set; }
    float GlobalPlaybackRate { get; set; }
    public static float MaxGlobalPlaybackRate { get; }
    public static float MinGlobalPlaybackRate { get; }
    BounceScalarNaturalMotionAnimation CreateBounceScalarAnimation();
    BounceVector2NaturalMotionAnimation CreateBounceVector2Animation();
    BounceVector3NaturalMotionAnimation CreateBounceVector3Animation();
    CompositionContainerShape CreateContainerShape();
    CompositionEllipseGeometry CreateEllipseGeometry();
    CompositionLineGeometry CreateLineGeometry();
    CompositionPathGeometry CreatePathGeometry();
    CompositionPathGeometry CreatePathGeometry(CompositionPath path);
    PathKeyFrameAnimation CreatePathKeyFrameAnimation();
    CompositionRectangleGeometry CreateRectangleGeometry();
    CompositionRoundedRectangleGeometry CreateRoundedRectangleGeometry();
    ShapeVisual CreateShapeVisual();
    CompositionSpriteShape CreateSpriteShape();
    CompositionSpriteShape CreateSpriteShape(CompositionGeometry geometry);
    CompositionViewBox CreateViewBox();
    IAsyncAction RequestCommitAsync();
  }
  public sealed class PathKeyFrameAnimation : KeyFrameAnimation
  public sealed class PointLight : CompositionLight {
    float MaxAttenuationCutoff { get; set; }
    float MinAttenuationCutoff { get; set; }
  }
  public sealed class ShapeVisual : ContainerVisual
  public sealed class SpotLight : CompositionLight {
    float MaxAttenuationCutoff { get; set; }
    float MinAttenuationCutoff { get; set; }
  }
}
namespace Windows.UI.Composition.Core {
  public sealed class CompositorController : IClosable
}
namespace Windows.UI.Composition.Desktop {
  public sealed class DesktopWindowTarget : CompositionTarget
}
namespace Windows.UI.Composition.Diagnostics {
  public sealed class CompositionDebugHeatMaps
  public enum CompositionDebugOverdrawContentKinds : uint
  public sealed class CompositionDebugSettings
}
namespace Windows.UI.Composition.Interactions {
  public enum VisualInteractionSourceRedirectionMode {
    CapableTouchpadAndPointerWheel = 3,
    PointerWheelOnly = 2,
  }
}
namespace Windows.UI.Core {
  public enum AppViewBackButtonVisibility {
    Disabled = 2,
  }
  public sealed class CoreComponentInputSource : ICoreInputSourceBase, ICorePointerInputSource, ICorePointerInputSource2 {
    DispatcherQueue DispatcherQueue { get; }
  }
  public sealed class CoreIndependentInputSource : ICoreInputSourceBase, ICorePointerInputSource, ICorePointerInputSource2 {
    DispatcherQueue DispatcherQueue { get; }
  }
  public interface ICorePointerInputSource2 : ICorePointerInputSource
}
namespace Windows.UI.Input.Core {
  public sealed class RadialControllerIndependentInputSource {
    DispatcherQueue DispatcherQueue { get; }
  }
}
namespace Windows.UI.Input.Inking {
  public sealed class InkDrawingAttributes {
    InkModelerAttributes ModelerAttributes { get; }
  }
  public sealed class InkInputConfiguration
  public sealed class InkModelerAttributes
  public sealed class InkPresenter {
    InkInputConfiguration InputConfiguration { get; }
  }
}
namespace Windows.UI.Input.Spatial {
  public sealed class SpatialInteractionController {
    BatteryReport TryGetBatteryReport();
  }
}
namespace Windows.UI.Notifications {
  public sealed class ScheduledToastNotification {
    IReference<DateTime> ExpirationTime { get; set; }
  }
}
namespace Windows.UI.StartScreen {
  public sealed class TileMixedRealityModel {
    TileMixedRealityModelActivationBehavior ActivationBehavior { get; set; }
  }
  public enum TileMixedRealityModelActivationBehavior
}
namespace Windows.UI.Text {
  public sealed class ContentLinkInfo
  public sealed class RichEditTextRange : ITextRange
  public enum TextRangeUnit {
    ContentLink = 32,
  }
}
namespace Windows.UI.ViewManagement.Core {
  public sealed class CoreInputView {
    event TypedEventHandler<CoreInputView, object> XYFocusTransferredToPrimaryView;
    event TypedEventHandler<CoreInputView, CoreInputViewTransferringXYFocusEventArgs> XYFocusTransferringFromPrimaryView;
    bool TryTransferXYFocusToPrimaryView(Rect origin, CoreInputViewXYFocusTransferDirection direction);
  }
  public sealed class CoreInputViewTransferringXYFocusEventArgs
  public enum CoreInputViewXYFocusTransferDirection
}
namespace Windows.UI.WebUI {
  public sealed class WebUIBarcodeScannerPreviewActivatedEventArgs : IActivatedEventArgs, IActivatedEventArgsDeferral, IActivatedEventArgsWithUser, IBarcodeScannerPreviewActivatedEventArgs
  public sealed class WebUILaunchActivatedEventArgs : IActivatedEventArgs, IActivatedEventArgsDeferral, IActivatedEventArgsWithUser, IApplicationViewActivatedEventArgs, ILaunchActivatedEventArgs, ILaunchActivatedEventArgs2, IPrelaunchActivatedEventArgs {
    TileActivatedInfo TileActivatedInfo { get; }
  }
}
namespace Windows.UI.Xaml {
  public sealed class BringIntoViewOptions {
    double HorizontalAlignmentRatio { get; set; }
    double HorizontalOffset { get; set; }
    double VerticalAlignmentRatio { get; set; }
    double VerticalOffset { get; set; }
  }
  public sealed class BringIntoViewRequestedEventArgs : RoutedEventArgs
  public sealed class ElementSoundPlayer {
    public static ElementSpatialAudioMode SpatialAudioMode { get; set; }
  }
  public enum ElementSpatialAudioMode
  public enum FocusVisualKind {
    Reveal = 2,
  }
  public class UIElement : DependencyObject {
    public static RoutedEvent BringIntoViewRequestedEvent { get; }
    public static RoutedEvent ContextRequestedEvent { get; }
    KeyboardAcceleratorPlacementMode KeyboardAcceleratorPlacementMode { get; set; }
    public static DependencyProperty KeyboardAcceleratorPlacementModeProperty { get; }
    DependencyObject KeyboardAcceleratorPlacementTarget { get; set; }
    public static DependencyProperty KeyboardAcceleratorPlacementTargetProperty { get; }
    DependencyObject KeyTipTarget { get; set; }
    public static DependencyProperty KeyTipTargetProperty { get; }
    event TypedEventHandler<UIElement, BringIntoViewRequestedEventArgs> BringIntoViewRequested;
    virtual void OnBringIntoViewRequested(BringIntoViewRequestedEventArgs e);
    virtual void OnKeyboardAcceleratorInvoked(KeyboardAcceleratorInvokedEventArgs args);
    public static void RegisterAsScrollPort(UIElement element);
  }
}
namespace Windows.UI.Xaml.Automation {
  public sealed class AutomationElementIdentifiers {
    public static AutomationProperty HeadingLevelProperty { get; }
  }
  public sealed class AutomationProperties {
    public static DependencyProperty HeadingLevelProperty { get; }
    public static AutomationHeadingLevel GetHeadingLevel(DependencyObject element);
    public static void SetHeadingLevel(DependencyObject element, AutomationHeadingLevel value);
  }
}
namespace Windows.UI.Xaml.Automation.Peers {
  public enum AutomationHeadingLevel
  public class AutomationPeer : DependencyObject {
    AutomationHeadingLevel GetHeadingLevel();
    virtual AutomationHeadingLevel GetHeadingLevelCore();
  }
  public sealed class AutoSuggestBoxAutomationPeer : FrameworkElementAutomationPeer, IInvokeProvider {
    void Invoke();
  }
  public class CalendarDatePickerAutomationPeer : FrameworkElementAutomationPeer, IInvokeProvider, IValueProvider
  public class TreeViewItemAutomationPeer : ListViewItemAutomationPeer, IExpandCollapseProvider
  public class TreeViewListAutomationPeer : SelectorAutomationPeer
}
namespace Windows.UI.Xaml.Controls {
  public class AppBarButton : Button, ICommandBarElement, ICommandBarElement2 {
    string KeyboardAcceleratorTextOverride { get; set; }
    public static DependencyProperty KeyboardAcceleratorTextOverrideProperty { get; }
    AppBarButtonTemplateSettings TemplateSettings { get; }
  }
  public class AppBarToggleButton : ToggleButton, ICommandBarElement, ICommandBarElement2 {
    string KeyboardAcceleratorTextOverride { get; set; }
    public static DependencyProperty KeyboardAcceleratorTextOverrideProperty { get; }
    AppBarToggleButtonTemplateSettings TemplateSettings { get; }
  }
  public sealed class ContentLinkChangedEventArgs
  public enum ContentLinkChangeKind
  public sealed class HandwritingPanelClosedEventArgs
  public sealed class HandwritingPanelOpenedEventArgs
  public enum HandwritingPanelPlacementAlignment
  public class HandwritingView : Control
  public class MediaTransportControls : Control {
    bool IsCompactOverlayButtonVisible { get; set; }
    public static DependencyProperty IsCompactOverlayButtonVisibleProperty { get; }
    bool IsCompactOverlayEnabled { get; set; }
    public static DependencyProperty IsCompactOverlayEnabledProperty { get; }
  }
  public class MenuFlyoutItem : MenuFlyoutItemBase {
    string KeyboardAcceleratorTextOverride { get; set; }
    public static DependencyProperty KeyboardAcceleratorTextOverrideProperty { get; }
    MenuFlyoutItemTemplateSettings TemplateSettings { get; }
  }
  public class NavigationView : ContentControl {
    NavigationViewBackButtonVisible IsBackButtonVisible { get; set; }
    public static DependencyProperty IsBackButtonVisibleProperty { get; }
    bool IsBackEnabled { get; set; }
    public static DependencyProperty IsBackEnabledProperty { get; }
    string PaneTitle { get; set; }
    public static DependencyProperty PaneTitleProperty { get; }
    event TypedEventHandler<NavigationView, NavigationViewBackRequestedEventArgs> BackRequested;
    event TypedEventHandler<NavigationView, object> PaneClosed;
    event TypedEventHandler<NavigationView, NavigationViewPaneClosingEventArgs> PaneClosing;
    event TypedEventHandler<NavigationView, object> PaneOpened;
    event TypedEventHandler<NavigationView, object> PaneOpening;
  }
  public enum NavigationViewBackButtonVisible
  public sealed class NavigationViewBackRequestedEventArgs
  public sealed class NavigationViewPaneClosingEventArgs
  public class RefreshContainer : ContentControl
  public sealed class RefreshInteractionRatioChangedEventArgs
  public enum RefreshPullDirection
  public sealed class RefreshRequestedEventArgs
  public sealed class RefreshStateChangedEventArgs
  public class RefreshVisualizer : Control
  public enum RefreshVisualizerOrientation
  public enum RefreshVisualizerState
  public class RichEditBox : Control {
    SolidColorBrush ContentLinkBackgroundColor { get; set; }
    public static DependencyProperty ContentLinkBackgroundColorProperty { get; }
    SolidColorBrush ContentLinkForegroundColor { get; set; }
    public static DependencyProperty ContentLinkForegroundColorProperty { get; }
    ContentLinkProviderCollection ContentLinkProviders { get; set; }
    public static DependencyProperty ContentLinkProvidersProperty { get; }
    HandwritingView HandwritingView { get; set; }
    public static DependencyProperty HandwritingViewProperty { get; }
    bool IsHandwritingViewEnabled { get; set; }
    public static DependencyProperty IsHandwritingViewEnabledProperty { get; }
    event TypedEventHandler<RichEditBox, ContentLinkChangedEventArgs> ContentLinkChanged;
    event TypedEventHandler<RichEditBox, ContentLinkInvokedEventArgs> ContentLinkInvoked;
  }
  public class TextBox : Control {
    HandwritingView HandwritingView { get; set; }
    public static DependencyProperty HandwritingViewProperty { get; }
    bool IsHandwritingViewEnabled { get; set; }
    public static DependencyProperty IsHandwritingViewEnabledProperty { get; }
  }
  public class TreeView : Control
  public sealed class TreeViewCollapsedEventArgs
  public sealed class TreeViewExpandingEventArgs
  public class TreeViewItem : ListViewItem
  public sealed class TreeViewItemInvokedEventArgs
  public class TreeViewItemTemplateSettings : DependencyObject
  public class TreeViewList : ListView
  public class TreeViewNode : DependencyObject
  public enum TreeViewSelectionMode
  public sealed class WebView : FrameworkElement {
    event TypedEventHandler<WebView, WebViewSeparateProcessLostEventArgs> SeparateProcessLost;
  }
  public enum WebViewExecutionMode {
    SeparateProcess = 2,
  }
  public enum WebViewPermissionType {
    ImmersiveView = 6,
    Screen = 5,
  }
  public sealed class WebViewSeparateProcessLostEventArgs
}
namespace Windows.UI.Xaml.Controls.Maps {
  public sealed class MapControl : Control {
    string Region { get; set; }
    public static DependencyProperty RegionProperty { get; }
  }
  public class MapElement : DependencyObject {
    bool IsEnabled { get; set; }
    public static DependencyProperty IsEnabledProperty { get; }
  }
}
namespace Windows.UI.Xaml.Controls.Primitives {
  public sealed class AppBarButtonTemplateSettings : DependencyObject
  public sealed class AppBarToggleButtonTemplateSettings : DependencyObject
  public sealed class MenuFlyoutItemTemplateSettings : DependencyObject
}
namespace Windows.UI.Xaml.Documents {
  public sealed class ContactContentLinkProvider : ContentLinkProvider
  public sealed class ContentLink : Inline
  public sealed class ContentLinkInvokedEventArgs
  public class ContentLinkProvider : DependencyObject
  public sealed class ContentLinkProviderCollection : IIterable<ContentLinkProvider>, IVector<ContentLinkProvider>
  public sealed class PlaceContentLinkProvider : ContentLinkProvider
}
namespace Windows.UI.Xaml.Input {
  public sealed class FocusManager {
    public static IAsyncOperation<FocusMovementResult> TryFocusAsync(DependencyObject element, FocusState value);
    public static IAsyncOperation<FocusMovementResult> TryMoveFocusAsync(FocusNavigationDirection focusNavigationDirection);
    public static IAsyncOperation<FocusMovementResult> TryMoveFocusAsync(FocusNavigationDirection focusNavigationDirection, FindNextElementOptions focusNavigationOptions);
  }
  public sealed class FocusMovementResult
  public sealed class GettingFocusEventArgs : RoutedEventArgs {
    bool TryCancel();
    bool TrySetNewFocusedElement(DependencyObject element);
  }
  public sealed class KeyboardAcceleratorInvokedEventArgs {
    KeyboardAccelerator KeyboardAccelerator { get; }
  }
  public enum KeyboardAcceleratorPlacementMode
  public sealed class LosingFocusEventArgs : RoutedEventArgs {
    bool TryCancel();
    bool TrySetNewFocusedElement(DependencyObject element);
  }
}
namespace Windows.UI.Xaml.Media {
  public sealed class CompositionTarget {
    public static event EventHandler<RenderedEventArgs> Rendered;
  }
  public sealed class RenderedEventArgs
}
namespace Windows.Web.UI {
  public interface IWebViewControl
  public sealed class WebViewControlContentLoadingEventArgs
  public sealed class WebViewControlDeferredPermissionRequest
  public sealed class WebViewControlDOMContentLoadedEventArgs
  public sealed class WebViewControlLongRunningScriptDetectedEventArgs
  public sealed class WebViewControlNavigationCompletedEventArgs
  public sealed class WebViewControlNavigationStartingEventArgs
  public sealed class WebViewControlNewWindowRequestedEventArgs
  public sealed class WebViewControlPermissionRequest
  public sealed class WebViewControlPermissionRequestedEventArgs
  public enum WebViewControlPermissionState
  public enum WebViewControlPermissionType
  public sealed class WebViewControlScriptNotifyEventArgs
  public sealed class WebViewControlSettings
  public sealed class WebViewControlUnsupportedUriSchemeIdentifiedEventArgs
  public sealed class WebViewControlUnviewableContentIdentifiedEventArgs
  public sealed class WebViewControlWebResourceRequestedEventArgs
}
namespace Windows.Web.UI.Interop {
  public sealed class WebViewControl : IWebViewControl
  public sealed class WebViewControlAcceleratorKeyPressedEventArgs
  public enum WebViewControlAcceleratorKeyRoutingStage
  public enum WebViewControlMoveFocusReason
  public sealed class WebViewControlMoveFocusRequestedEventArgs
  public sealed class WebViewControlProcess
  public enum WebViewControlProcessCapabilityState
  public sealed class WebViewControlProcessOptions
}
 

The post Windows 10 SDK Preview Build 17115 now available appeared first on Windows Developer Blog.

Microsoft and 21Vianet reinforce long-term cooperation on cloud services in China

$
0
0

Microsoft and 21Vianet have agreed to extend their partnership to provide world-class public cloud services to Chinese customers. Combining Microsoft’s global technological leadership and 21Vianet’s local operations expertise, Microsoft Azure and Office 365 operated by 21Vianet have achieved unprecedented, robust three-digit growth for nearly four consecutive years in China. This breakthrough cooperation model pioneered by Microsoft and 21Vianet has been recognized as an effective and successful method for a legal and compliant operation of international cloud services in China.

Announced in 2013 and officially launched in March 2014, Microsoft was the first international public cloud provider to bring its cloud technology to China in partnership with 21Vianet. Customers and partners range from established Chinese brands such as Haier, Lenovo, and Huawei to emerging powerhouses such as smartphone manufacturer Xiaomi, bike-share company Mobike, automobile manufacturer BYD, world-leading sporting goods company Amer Sports and Arcplus Data & Innovation Technology, an integrated solutions provider for construction engineering industry.

Office 365 operated by 21Vianet was launched in China in April 2014 and now ranks # 1 in China’s SaaS market. Huawei, Tencent, and Pactera currently use Office 365 operated by 21Vianet to empower their employees and optimize their daily business operations.

Microsoft Azure and Office 365 operated by 21Vianet have received 10 trusted cloud certifications, including cloud hosts, cloud storage, databases, cloud engines, network load balancing, enterprise-class e-mail, file sharing, online meeting, cloud backup and hybrid cloud, making 21Vianet the cloud service provider with the most trusted cloud certifications in China. In 2017, Microsoft Azure operated by 21Vianet, passed the industry's first "Hybrid Cloud Solution Assessment" and was awarded the only "Trusted Cloud Technology Innovation Award-Hybrid Cloud Award" by the Trusted Cloud Conference. In accordance with the latest regulatory requirement on cloud services, 21Vianet, as the operator, obtained the newly required Internet Resource Collaboration Service (IRCS) license in August 2017, which ensures the compliance of its cloud services in China.

With a growth mindset and strong confidence in the China market, Microsoft and 21Vianet are in the process of expanding their capacity. As Microsoft CEO Satya Nadella announced at the Microsoft Tech Summit 2017 in November, Microsoft Azure operated by 21Vianet will triple its capacity in China in the first half of 2018. Azure’s enlarged capacity will provide increased flexibility and wider access to cutting-edge Azure cloud services. It will also make it easier for multinational companies to meet the needs of Chinese customers through the scale, power, and secure infrastructure of the Azure cloud.

For more information about Azure services in China, please visit the official site of Microsoft Azure operated by 21Vianet: www.azure.cn.

New offers in Azure Marketplace – February 2018

$
0
0

We continue to expand the Azure Marketplace ecosystem. In February 2018, 81 new offers successfully met the onboarding criteria and went live.

See details of the new offers below:

clip_image001

Sensitive Data Discovery and De-Id Tool (SDDT): SDDT simplifies and automates organization's compliance with the GLBA, HIPAA, PCI, GDPR.

clip_image002

Actian Vector Analytic Database Community Edition: Vector is the world's fastest analytic database designed from ground-up to exploit x86 architecture.

clip_image003

Dyadic EKM Server Image: Dyadic Enterprise Key Management (EKM) lets you manage and control keys in any application deployed in Azure.

clip_image004

Infection Monkey: Open against source attack simulation tool to test the resilience of Azure deployments cyber-attacks.

clip_image005

Maestro Server V6: The power of Profisee Base Server with GRM, SDK, Workflow, and Integrator.

clip_image006

BigDL Spark Deep Learning Library v0.3: Deep Learning framework for distributed

computing leveraging Spark architecture on Xeon CPUs. Feature-parity with TF and Caffe, but with no GPU required.

clip_image007

Informatica Enterprise Data Catalog: Discover and understand data assets across your enterprise with an AI-powered data catalog.

clip_image008

Webserver on Windows Server 2016: Web server is a computer that runs websites. The term can refer to the entire system, or specifically to the software that accepts and supervises the HTTP requests.

clip_image005[1]

Maestro GRM Server V6: The Version 6 Virtual Machine provides all the capabilities of the Base Server plus Golden Record Management (GRM).

clip_image009

cloudplan Private Cloud Node Server: The most secure private cloud solution with 100% data sovereignty.

clip_image005[2]

Maestro Base Server V6: Delivers the fastest ROI solution focused on reference and mastering data management.

clip_image010

Moodle on Ubuntu 16.04 LTS: Moodle LMS is the most popular open source license-free Learning Management System

clip_image005[3]

Maestro SDK Server V6: Profisee SDK Server on the Azure Marketplace provides all of the capabilities of the Base Server plus the Software Development Kit (SDK) and Workflow in integrated and orchestrated master data solutions.

clip_image011

ManageEngine ADSelfService Plus: ManageEngine ADSelfService Plus is a secure, web-based, end-user password reset management program.

clip_image012

Intellicus BI Server (10 Users): Intellicus provides a range of reporting and dashboard visualizations over a secured BI meta layer.

clip_image013

Dell EMC Avamar Virtual Edition: AVE is a software-defined version of the industry leading protection software from Dell EMC.

clip_image012[1]

Intellicus BI Server (10 Users - Linux): Intellicus BI Server is an enterprise reporting and BI platform with all the features to create a comprehensive data analytics platform.

clip_image014

Veritas CloudPoint: Enterprise cloud backup for workloads and data in Azure.

clip_image015

F5 BIG-IP Better: Application and security services for Microsoft Azure-based applications.

clip_image015[1]

F5 BIG-IP Best: Application and security services for Microsoft Azure-based applications

clip_image015[2]

F5 BIG-IP Good: Application and security services for Microsoft Azure-based applications

clip_image016

Node.js PHP IIS on Windows Server 2012 R2: Node.js is an open source server framework.

clip_image017

LAMP on Ubuntu 16.04 LTS: LAMP is an open source Web development platform that uses Linux as the operating system.

clip_image018

ManageEngine O365 Manager Plus: ManageEngine O365 Manager Plus is an extensive Office 365 reporting, management, and auditing tool.

clip_image019

Osirium PxM Platform: The Osirium PxM Platform is a Privileged account and infrastructure management solution.

clip_image020

RapidMiner Server 8.1: Real Data Science, Fast and Simple: share, reuse and operationalize models created with RapidMiner.

clip_image021

Cloud Backup for the Enterprise and MSPs: Asigra is a secure and reliable backup, replication and recovery platform for all enterprise and MSP workloads.

clip_image017[1]

LAMP on CentOS 7.3: LAMP is an open source Web development platform that uses Linux as the operating system.

clip_image022

WordPress on Ubuntu 16.04 LTS: Allows users to extend the features and functionality of WordPress.

clip_image023

Alces Flight Compute, Cluster Edition: Quickly launch a Personal High Performance Computing (HPC) environment

clip_image024

Trifacta Wrangler Enterprise: Self-Service Data Preparation on Microsoft Azure and HDInsight. Designed to handle data wrangling workloads that need to support data at scale and a larger number of end users.

clip_image025

Kyligence Analytics Platform Plus 2.5: Kyligence Analytics Platform (KAP) Plus is an enterprise OLAP engine on Hadoop.

clip_image026

NetScaler 12.0 VPX Express: NetScaler VPX Express is a free virtual application delivery controller that combines the latest cloud-native features with a simple user experience.

clip_image027

CloudCheckr - The Cloud Management Company: Unify multiple public cloud investments into one platform for complete IaaS management & governance.

clip_image028

CIS CentOS 7 Benchmark v2.1.1.0 - L1: CIS Benchmarks are consensus-based security configuration guides both developed and accepted by government, business, industry, and academia.

clip_image028[1]

CIS CentOS 6 Benchmark v2.0.2.0 - L1: CIS Benchmarks are consensus-based security configuration guides both developed and accepted by government, business, industry, and academia.

clip_image029

IncrediBuild: Development Acceleration Platform - the best way to achieve faster builds

clip_image030

SQUASH TM (Test Management): Squash TM is the test repository manager found in the open source Squash toolkit

clip_image031

IBM WebSphere Portal Server 8.5: Hourly licensing of IBM's WebSphere Portal Server 8.5 on the Azure Marketplace.

clip_image031[1]

IBM WebSphere Portal Server 9.0: Hourly licensing of IBM's WebSphere Portal Server 9.0 on the Azure Marketplace.

clip_image032

ManageEngine ADManager Plus: ADManager Plus is a simple, easy-to-use Windows Active Directory Management and Reporting Solution

 

clip_image033

ManageEngine EventLog Analyzer: EventLog Analyzer is an IT Compliance & Log Management Software for SIEM

clip_image034

ManageEngine ADAudit Plus: ADAudit Plus is a Web-based, Active Directory tool to track all domain events

clip_image035

ManageEngine Exchange Reporter Plus: Exchange Reporter Plus is a web-based analysis and reporting solution for Microsoft Exchange

clip_image036

PyTorch Production: A fully integrated deep learning software stack with PyTorch and Python

clip_image037

Z1 SecureHub: Z1 SecureHub encrypts large files for secure data transfer.

clip_image038

Aviatrix Scalable VGW - S2S or VNET2VNET Peering VPN Appliance in your Azure virtual network and used for Site2VNET and VNet2VNet VPN connections.

clip_image039

Infoworks Cloud Data Warehousing Platform: The Infoworks Platform is the first and only fully-automated, end-to-end platform for rapidly implementing big data use cases.

clip_image040

Unbound UKC Server Image: Unbound Key Control (UKC) lets you manage and control keys in any application deployed in Azure. Unmatched levels of security and control for your crypto keys in the cloud.

clip_image041

Jamcracker Cloud Control Appliance Version5: Control your cloud resources with automation, orchestration and in-built governance tools.

clip_image041[1]

Jamcracker Cloud Analytics Version5: Jamcracker Appliance - Cloud Analytics provides visibility into your cloud costs across your organization.

clip_image041[2]

Jamcracker CSB Standard Version5: Jamcracker CSB appliance built for Microsoft CSP Partners.

clip_image031[2]

IBM WebSphere MQ 7.5: Hourly licensing of IBM's WebSphere MQ 9.0 on the Azure Marketplace.

clip_image022[1]

WordPress on Ubuntu 14.04 LTS: Allows users to extend the features and functionality on WordPress.

clip_image042

Pivotal CRM 6.6: Aptean Pivotal CRM is a platform that integrates all the characteristics of successful CRM.

clip_image043

OptiTune Enterprise Edition 5.6.2

IT Management Simplified. Precisely designed to maximize efficiency and simplicity of IT management in any size operation.

clip_image044

Drupal 8.4.4 on Ubuntu 14.04 LTS

Drupal is a scalable, open platform for web content management and digital experiences.

clip_image045

centos 7 optimiz with WordPress: Ready to use centos 7 optimization with WordPress.

clip_image046

Icinga 2: This is community code built on CentOS, installed and configured to monitor Linux and Windows hosts connected directly.

clip_image046[1]

Veeam Availability Console for Service Providers: #1 Cloud Backup and DRaaS for Service Providers

clip_image047

MediaWiki on Ubuntu 14.04 LTS: MediaWiki is an extremely powerful, scalable software.

clip_image048

Oceanblue Cloud SD-WAN EdgeConnector V100: V100 can be deployed in both private cloud and public cloud nodes.

clip_image049

TenableCore WAS (BYOL): Tenable.io Web Application Scanning safely, accurately and automatically scans your web applications

clip_image022[2]

WordPress on CentOS 7.3: Allows users to extend the features and functionality of WordPress.

clip_image050

centos 7 optimiz with osticket system ready: Ready to install, open source support ticket system.

clip_image051

vMX Virtual Router: Juniper Networks offers a 3D Universal Edge Router, one of the industry’s most scalable virtual routers.

clip_image052

Node.js High-Availability Cluster: Node.js High-Availability Cluster for production environments.

clip_image053

CELUM DAM: Organize, manage and share your valuable content in the CELUM Digital Asset Management (DAM).

clip_image054

NGiNX on CentOS 7.4: NGiNX is a free, open-source, high-performance HTTP server, reverse proxy server.

clip_image054[1]

NGiNX on Ubuntu 16.04 LTS: NGiNX is a free, open-source, high-performance HTTP server, reverse proxy server.

clip_image055

LEMP Stack on Ubuntu 16.04 LTS: LEMP is a group of software which enable a server to host dynamic websites and web applications.

clip_image056

Nasuni NMC: Nasuni Management Console (NMC) enables you to monitor and manage many Nasuni Edge Application from one central appliance.

clip_image005[4]

Maestro Server V6 BYOL: The Profisee Complete Server V6 virtual machine delivers all of the power of Profisee Base Server with GRM, SDK, Workflow, and Integrator.

clip_image056[1]

Nasuni Edge Appliance: Nasuni Edge Appliances located in Azure securely transmit all files instantly to your Azure storage container using customer-owned encryption keys, while locally caching only the active files.

clip_image057

Smart oneM2M network: Plug and Play IoT network. Pilot Things supports public and private LoRa networks.

clip_image059

Veeam Backup & Replication 9.5: Veeam® Backup & Replication™ 9.5 Update 3 brings backup and replication together into a single software solution.

clip_image061

MyCloudIT - Azure Desktop Hosting: MyCloudIT App automates the deployment, management and monitoring of Azure Desktop Hosting.

clip_image062

NetApp ONTAP Cloud for Azure: Minimize your cloud storage footprint with the NetApp ONTAP Cloud for Azure storage service.

clip_image063

StarWind VTL: StarWind VTL coverts SATA drives into virtual tapes, emulating real existing tape hardware.

clip_image065

Vonage: Password vaulting with a simple step-by-step user interface for connecting Vonage to Azure Active Directory.

clip_image066

Xcalar Data Platform: Data analytics with unprecedented simplicity, speed and scale

Visual Studio at GDC 2018

$
0
0

Next week, the world’s largest professional game industry event kicks off in San Francisco: Game Developers Conference (GDC) 2018. We’re incredibly excited to engage with all developers at the event looking to join the growing community of more than half a million monthly active developers building great games with Visual Studio today. Microsoft experts will be at the event and are looking forward to have great conversations with you. Here’s an overview of where you can find us.

Visual Studio at GDC 2018

Expo booth and theater sessions

Visual Studio experts will be present in the main Microsoft booth in the South Tower Lobby, together with experts from Azure, Mixer, PlayFab, Windows, and others. Come talk to us about:

  • Using Visual Studio 2017, Visual Studio for Mac, and Visual Studio Code to build games for all platforms across desktop, mobile, and console with a variety of game engines.
  • How Visual Studio Team Services can help you share code, plan, build, and ship games with unlimited private Git repositories, cloud-hosted build agents, Agile planning tools and Kanban boards and much more.
  • Leveraging Visual Studio App Center to automate testing your games on real Android and iOS devices, distribute to testers and app stores, and monitoring real-world usage.

Located just outside the South Hall entrance, you will find experts to talk to about all these topics, as well as amazing experiences from Microsoft to participate in. You will also be able to join 20-minute theater sessions here, covering a wide range of hot topics.

Where we will be

DevOps breakout session

On March 22, Microsoft’s Cloud Developer Advocates Jessica Deen (@jldeen) and Abel Wang (@AbelSquidHead) will deliver a breakout session on DevOps for Game Developers with Team Services and Microsoft Azure at 11:30 AM.

So much more…

Of course, this is just the tip of the iceberg. There’s great session content from various Microsoft teams, access to experts across Xbox, Azure, and PlayFab, and much more to help you build great games with the help of our technology.

To learn more about all the different ways you can interact with Microsoft at GDC 2018, take a look at our Microsoft @ GDC page. There you will also find a PDF version of this information, so you can keep it with you on paper or your phone for easy reference.

We hope to see you at the event and look forward to talking with you all! And if you can’t make it to the event, be sure to follow @VisualStudio for the latest from GDC 2018 and beyond.

Rajen Kishna, Sr. Product Marketing Manager
@rajen_k

Rajen does product marketing at Microsoft for Visual Studio for Mac, as well as mobile and game developer tools, focusing on .NET

Build Time Improvement Recommendation: Turn off /MAP, use PDBs

$
0
0

Map file is a plaintext file that contains information about where certain names and symbols exist in a binary produced by the linker. It also contain detailed information on all sections in your binary (code, data, etc.) and which OBJ/LIB each symbol is defined in. The Windows debuggers (like windbg.exe) can use map files to help locate where a program crashed based on a crash address. Map files are an old technology: with modern releases of the MSVC toolset, PDB (Program Database) files do everything map files do and more.

Producing a map file takes a long time. If you see the linker switch /MAP in your build but you don’t have a need for map files, you should remove the switch to speed up your build. We’ve done work recently to speed up the production of a map file but generating map files will be a slow process.

If you are one of the few who needs map files (for example, to quickly check whether interested set of functions or data are laid out in expected or correct order in binary), rest assured that we’re not removing them. However, here are a few points as to why you should turn off /MAP and simply use PDBs:

  • Turning off map file generation reduces your build time. Though we recently improved throughput of map file generation in full linking scenario, the linker is not able to incrementally update an existing map file produced by prior linking, which hurts incremental linking throughput. This is different for PDB file, which can be surgically updated by the linker during incremental linking.
  • Unlike PDB files, there is no strong binding between a binary and its corresponding map file. It is difficult to track which map file is for which versioned binary.
  • Unlike PDB files, there is no support like symbol server for map files.
  • Information in a PDB file is a superset of what is in a map file. In practice, almost all builds will by default produce PDB files.

Lastly, we have published DIA APIs that people can use to write their own tools to retrieve from PDB file all the information that is available today in a map file.

In closing

We know that build throughput is important for developers and we are continuing to improve our toolset’s throughput performance. You can read more about what we’re doing to improve throughput in our recent Visual Studio 2017 Throughput Improvements and Advice blog post. And remember to check your build to see if you’re generating unneeded map files!

If you have any feedback or suggestions for us, let us know. We can be reached via the comments below, via email (visualcpp@microsoft.com) and you can provide feedback via Help > Report A Problem in the product, or via Developer Community. You can also find us on Twitter (@VisualC) and Facebook (msftvisualcpp).


In case you missed it: February 2018 roundup

$
0
0

In case you missed them, here are some articles from February of particular interest to R users.

The R Consortium opens a new round of grant applications for R-related user groups and projects, and has issued US$0.5M in grants to date for R-related projects and events.

Microsoft R Client 3.4.3 and Microsoft ML Server 9.3, both built with R 3.4.3, have been released. 

An 8-step, 5-minute tutorial for setting up a cluster in Azure for use with the sparklyr package.

A smartphone app uses R and the keras package to identify "spells" using accelerometer data.

"Machine Learning with R and Tensorflow", JJ Allaire's keynote presentation at RStudio::conf.

A guide to styling base graphics in R.

A list of applications, open source projects, and extensions from Microsoft related to R.

Several upcoming R conferences offer diversity scholarships.

Introducing the DataExplorer package, for quick data summaries and visualizations. 

A video overview of the Data Science Virtual Machine, featuring R. 

"Asking the right questions about AI", an essay about the ethical implications of predictions.

And some general interest stories (not necessarily related to R):

As always, thanks for the comments and please send any suggestions to me at davidsmi@microsoft.com. Don't forget you can follow the blog using an RSS reader, via email using blogtrottr, or by following me on Twitter (I'm @revodavid). You can find roundups of previous months here.

GVFS for Mac

$
0
0
Over the last couple of years, we built GVFS to enable the Windows team to work in a Git repo that is orders of magnitude larger than any repo in existence before it. GVFS is currently only supported on Windows 10. We recently announced that we’re investigating how to build GVFS on other platforms. I’m... Read More

R 3.4.4 released

$
0
0

R 3.4.4 has been released, and binaries for Windows, Mac, Linux and now available for download on CRAN. This update (codenamed "Someone to Lean On" — likely a Peanuts reference, though I couldn't find which one with a quick search) is a minor bugfix release, and shouldn't cause any compatibility issues with scripts or packages written for prior versions of R in the 3.4.x series.

This update improves automatic timezone detection on some systems, and adds fixes for a some unusual corner cases in the statistics library. For a complete list of the changes, check the NEWS file for R 3.4.4 or follow the link below.

R-announce mailing list: R 3.4.4 is released

#ifdef WINDOWS – What is Windows Machine Learning and how to get started

$
0
0

With the next release of Windows, developers will be able to evaluate trained machine learning models locally on Windows 10 devices, allowing developers to use pre-trained models within their applications with hardware-accelerated performance by leveraging the device’s CPU or GPU to compute evaluations for both classical Machine Learning algorithms and Deep Learning.

Lucas Brodzinski from the Windows Machine Learning team stopped by to demonstrate just how easy it is to get started with pre-trained models by importing them through Visual Studio and writing few lines of code. Watch the full video above and feel free to reach out on Twitter or in the comments below for questions or comments.

Happy coding!

#ifdef WINDOWS is a periodic dev show by developers for developers focused on Windows development through interviews of engineers working on the Windows platform. Learn why and how features and APIs are built, how to be more successful building Windows apps, what goes into building for Windows and ultimately how to become a better Windows developer. Subscribe to the YouTube channel for notifications about new videos as they are posted, and make sure to reach out on Twitter for comments and suggestions.

The post #ifdef WINDOWS – What is Windows Machine Learning and how to get started appeared first on Windows Developer Blog.

Announcing TypeScript 2.8 RC

$
0
0
Today we’re excited to announce and get some early feedback with TypeScript 2.8’s Release Candidate. To get started with the RC, you can access it through NuGet, or use npm with the following command:
npm install -g typescript@rc

You can also get editor support by

Let’s jump into some highlights that are available in our RC!

Conditional Types

TypeScript 2.8 introduces a new construct called conditional types. This new construct is based on JavaScript’s conditional syntax, and takes the form A extends B ? C : D. You should mentally read this as “if the type A is assignable to B, then the type boils down to C, and otherwise becomes D“.

interface Animal {
    live(): void;
}
interface Dog extends Animal {
    woof(): void;
}

// Has type 'number'
type Foo = Dog extends Animal ? number : string;

// Has type 'string'
type Bar = RegExp extends Dog ? number : string;

Conditional types help model simple choices made over based on types at runtime, but afford significantly more expressive constructs at design-time. For example, imagine the following function written with overloads:

interface Id { id: number, /* other fields */ }
interface Name { name: string, /* other fields */ }

declare function createLabel(id: number): Id;
declare function createLabel(name: string): Name;

These overloads describe a single JavaScript function that makes a choice based on the types of its inputs. If a library has to make the same sort of choice over and over throughout its API, this becomes cumbersome. Here, we can use a conditional type to smush both of our overloads down to one, and create a type alias so that we can reuse that logic.

type IdOrName<T extends number | string> =
    T extends number ? Id : Name;

declare function createLabel<T extends number | string>(idOrName: T): IdOrName<T>;

let a = createLabel("daniel");      // Name
let b = createLabel(26);            // Id
let c = createLabel("" as any);     // Id | Name
let d = createLabel("" as never);   // never

To go further, we could also write a helper type that flattens array types to their element types, but leaves them alone otherwise:

type Flatten<T> = T extends any[] ? T[number] : T;

Conditional types also provide us with a new way to infer types from the types we compare against using the new infer keyword which introduces a new type variable. For example, we could have written Flatten as follows:

// We also could also have used '(infer U)[]' instead of 'Array<infer U>'
type Flatten<T> = T extends Array<infer U> ? U : T

Similarly, we could write helper functions to get returned types of function types:

type GetReturnedType<T> =
    T extends ((...args: any[]) => infer R) ? R : T;

declare function foo(): number;

type FooReturnType = GetReturnedType<typeof foo>; // number

One last thing to note is that conditional types distribute if the type being checked is a type parameter that ends up being instantiated with a union type. So for example, in the following example, Bar has the type string[] | number:

type Foo<T> = T extends any ? T[] : never

// Has type 'string[] | number[]'.
type Bar = Foo<string | number>

For convenience, TypeScript 2.8 provides several new type aliases in lib.d.ts that use conditional types:

/**
 * Exclude from T those types that are assignable to U
 */
type Exclude<T, U> = T extends U ? never : T;

/**
 * Extract from T those types that are assignable to U
 */
type Extract<T, U> = T extends U ? T : never;

/**
 * Exclude null and undefined from T
 */
type NonNullable<T> = T extends null | undefined ? never : T;

/**
 * Obtain the return type of a function type
 */
type ReturnType<T extends (...args: any[]) => any> =
    T extends (...args: any[]) => infer R ? R : any;

JSX Pragmas

TypeScript now supports a pragma comment for specifying the source of a JSX factory within any file. If you’ve used Babel, the syntax is the same, but if not, here’s an example of what it looks like:

/** @jsx dom */
import { dom } from "./renderer"
<h></h>

The above sample imports a function named dom, and uses a JSX pragma to select dom as the factory for all JSX expressions in the file. TypeScript 2.8 will rewrite it to the following when compiling to CommonJS and ES5:

var renderer_1 = require("./renderer");
renderer_1.dom("h", null);

This feature be useful if your project mixes different libraries that support a React-like element factory (e.g. React, Preact, Stencil, Inferno, Cycle, or even others).

Granular Control on Mapped Type Modifiers

TypeScript’s mapped object types provide the capability of saying every property in a resulting type is read-only or potentially optional by adding the readonly or ? modifiers as appropriate:

// Creates a type with all the properties in T,
// but marked both readonly and optional.
type AllModifiers<T> = {
    readonly [P in keyof T]?: T[P]
}

This is handy, but until now, mapped types could only add modifiers if they weren’t previously present. For homomorphic mapped types (which copy all modifiers from the original type), this can be limiting:

interface Foo {
    readonly abc: number;
    def?: string;
}

type Props<T> = {
    [P in keyof T]: T[P]
}

// All modifiers are copied over.
// 'abc' is read-only, and 'def' is optional.
type IdenticalFoo = Props<Foo>

TypeScript 2.8 allows more explicit syntax for adding and removing modifiers in mapped types with the + and - operators. For example,

type Mutable<T> = {
    -readonly [P in keyof T]: T[P]
}

interface Foo {
    readonly abc: number;
    def?: string;
}

// 'abc' is no longer read-only, but 'def' is still optional.
type TotallyMutableFoo = Mutable<Foo>

In the above, Mutable removes readonly from each property of the type that it maps over. Similarly, TypeScript now provides a new Required type in lib.d.ts that removes optionality from each property:

/**
 * Make all properties in T required
 */
type Required<T> = {
    [P in keyof T]-?: T[P];
}

JSX.Element is resolved via the JSX Factory

Currently, when TypeScript uses JSX, it looks up a global JSX namespace to look up certain types (e.g. “what’s the type of a JSX component?”). In TypeScript 2.8, the compiler will try to look up the JSX namespace based on the location of your JSX factory. For example, if your JSX factory is React.createElement, TypeScript will try to first resolve React.JSX.Element, and then resolve JSX.Element within the current scope.

This can be helpful when mixing and matching different libraries (e.g. React and Preact) or different versions of a specific library (e.g. React 14 and React 16), as placing the JSX namespace in the global scope can cause issues. Going forward, we recommend that new JSX-oriented libraries avoid placing JSX in the global scope, and instead export it from the same location as the respective factory function.

Breaking changes

Unused type parameters are checked under --noUnusedParameters

Unused type parameters were previously reported under –noUnusedLocals, but are now instead reported under --noUnusedParameters. You can read more on issue #20568

HTMLObjectElement no longer has an alt attribute

Such behavior is not covered by the WHATWG standard. You can read more on issue #21386

What’s next?

We try to keep our plans easily discoverable on on the TypeScript roadmap for everything else that’s coming in 2.8 and beyond. TypeScript 2.8 proper should arrive towards the end of the month, but to make that successful, we need all the help we can get, so download the RC today and let us know what you think!

Feel free to drop us a line on GitHub if you run into any problems, and let others know how you feel about this RC on Twitter and in the comments below!

Cross-platform GUIs with open source .NET using Eto.Forms

$
0
0

Amazing Cross Platform ANSI art editorThis is one of those "Did you know you could do THAT?" Many folks have figured out that C#/F#/.NET is cross-platform and open0source and runs on basically any operating system. People are using it to create micro services, web sites, and webAPI's all over. Not to mention iPhone/Android apps with Xamarin and video games with Unity and MonoGame.

But what about cross platform UIs?

While not officially supported by Microsoft - you can do some awesome stuff...as is how Open Source is supposed to work! Remember that there's a family of .NET Runtimes now, there's the .NET Framework on Windows, there's xplat .NET Core, and there's xplat Mono.

Eto.Forms has been in development since 2012 and is a cross-platform framework for creating GUI (Graphical User Interface, natch) applications with .NET that run across multiple platforms using their native toolkit. Not like Java in the 90s with custom painted buttons on canvas.

It's being used for real stuff! In fact, PabloDraw is an Ansi/Ascii text editor that you didn't know you needed in your life. But you do. It runs on Windows, Mac, and Linux and was written using Eto.Forms but has a native UI on each platform. Be sure to check out Curtis Wensley's Twitter account for some cool examples of what PabloDraw and Eto.Forms can do!

  • OS X: MonoMac or Xamarin.Mac (and also iOS via Xamarin)
  • Linux: GTK# 2 or 3
  • Windows: Windows Forms (using GDI or Direct2D) or WPF

Here's an example Hello World. Note that it's not just Code First, you can also use Xaml, or even Json (.jeto) to layout your forms!

using Eto.Forms;

using Eto.Drawing;

public class MyForm : Form
{
public MyForm ()
{
Title = "My Cross-Platform App";
ClientSize = new Size(200, 200);
Content = new Label { Text = "Hello World!" };
}

[STAThread]
static void Main()
{
new Application().Run(new MyForm());
}
}

Or I can just File | New Project with their Visual Studio Extension. You should definitely give it a try.

image

Even on the same platform (Windows in the below example) amazingly Eto.Forms can use whatever Native Controls you prefer. Here's a great example zip that has precompiled test apps.

WinForms, WPF, and Direct2D apps

Once you've installed a new version of Mono on Ubuntu, you can run the same sample as Gtk3, as I'm doing here in a VM. AMAZING.

image

Here's some example applications that are in the wild, using Eto.Forms:

There's so much cool stuff happening in open source .NET right now, and Eto.Forms is actively looking for help. Go check out their excellent Wiki, read the Tutorials, and maybe get involved!


Sponsor: Get the latest JetBrains Rider for debugging third-party .NET code, Smart Step Into, more debugger improvements, C# Interactive, new project wizard, and formatting code in columns.



© 2017 Scott Hanselman. All rights reserved.
     

Top stories from the VSTS community – 2018.03.16

$
0
0
Here are top stories we found in our streams this week related to DevOps, VSTS, TFS and other interesting topics. TOP STORIES GitKraken Now Integrates with VSTS – Sara BreedingGitKraken Pro now integrates with Microsoft Visual Studio Team Services (VSTS). Inside the app, navigate to Preferences > Authentication to set up VSTS integration. Creating a... Read More

Because it’s Friday: Email a tree

$
0
0

The City of Melbourne has collected data on the more than 70,000 trees in the urban forest of this Australian metropolis. The data include the species, the health status of the tree and its life expectancy, all shown on a lovely map.

Trees

As you can see from the image above, each tree also has a unique email address. The idea is that citizens can report problems with trees, like disease or a fallen limb. But as the Atlantic reported in 2015, the addresses have also been used to write charming letters to the trees. For example, this email to a Golden Elm:

I’m so sorry you're going to die soon. It makes me sad when trucks damage your low hanging branches. Are you as tired of all this construction work as we are?

Sometimes the trees even reply, like this Willow Leaf Pepperment:

29 Jan 2015

Hello Mr Willow Leaf Peppermint, or should I say Mrs Willow Leaf Peppermint?

Do trees have genders?

I hope you've had some nice sun today.

Regards

L

30 Jan 2015

Hello

I am not a Mr or a Mrs, as I have what's called perfect flowers that include both genders in my flower structure, the term for this is Monoicous. Some trees species have only male or female flowers on individual plants and therefore do have genders, the term for this is Dioecious. Some other trees have male flowers and female flowers on the same tree. It is all very confusing and quite amazing how diverse and complex trees can be.

Kind regards,

Mr and Mrs Willow Leaf Peppermint (same Tree)

 You can find a new more letters in this news.com.au article as well.

 That's all from us for this week. Hope you have a great weekend (perhaps amongst the trees?) and we'll be back with more next week.

Serverless computing recipes for your cloud applications

$
0
0

You have heard the hype around serverless computing, read countless online articles about its benefits, and heard industry pundits find new adjectives to describe its pathbreaking nature on a frequent basis. Are you now ready to dig into what you can actually do with real code using serverless computing cloud services like Azure Functions? If so, you should download and read the free Azure Serverless Computing Cookbook that describes with rich code examples, how to solve common problems using serverless Azure Functions.


However, if you need a little more motivation, read on.

Let us get the basics out of the way first. Serverless computing enables:

  • Full abstraction of servers: Focusing on your application code, not on servers running the code.
  • Instant event-driven scalability: Not worrying about scaling up infrastructure as traffic grows.
  • Pay-per-use: Paying only for the time your code is running and the resources it consumes

However, as a developer there is so much more to it that you should care about.

Your cloud journey can start small

You don’t really have to bet your entire application portfolio on this new way of building software all at once. The good thing about the Functions-as-a-Service (FaaS) model provided by Azure Functions is that it allows you to perform a small set of operations, either as extensions to your existing apps or as net new scenarios that you want to try out. Build an automated database cleanup utility, a social media monitoring service, or a file archiving tool that you have been wanting and see if serverless is the right model for you. If one approach doesn’t work for you, write-off the few cents you have spent during this experimentation and start over. It really makes the cloud a lot more approachable.

Fewer servers is good, but less code is even better

Once your code is in the cloud, chances are it will interact with many other cloud services like Database, Storage, Messaging, IoT etc. Having to learn all those cloud services and their APIs, SDKs etc. can be daunting. Azure Functions provides innovative features like Triggers and Bindings that make it very easy for your code to consume all the different Azure services, thereby simplifying your code to contain only business logic rather than the plumbing required to talk to those services. Additionally, the FaaS model naturally leads you in the direction of building small independent micro services, which means better code reuse.

The swiss army knife of cloud applications

You have done your experimentation and seen the economic and productivity benefits of serverless. You are now ready to enter the big game and are probably wondering what kind of problems you can solve with serverless architectures. Building application back ends such as web, mobile, or IoT with variable traffic, real-time data processing pipelines with need for custom processing, automation of IT and operational tasks, and integrating with other services or SaaS applications, are all good examples of where serverless architecture is a good fit. In all these scenarios, Azure Functions provides special benefits through purpose-built integrations with other services required for these scenarios.

Debug your CLOUD application on a DESKTOP computer

Ever heard developers complain about productivity impedance when they move to the cloud. How to debug? How best to deploy? How to monitor? And so on. This is not the case with Azure. Whether through world class tools like Visual Studio, Visual Studio Code or through a command line experience you can get the same edit, build, test, and debug benefits for your serverless applications that you use for your traditional applications. You get all this while running on your local development machine. And if developing entirely through the browser-based portal experience is your thing, Azure Functions provides that too.

Step up to next level

Once you have a serverless application running in the cloud, how do you go about setting up standard practices for Continuous Integration, Continuous Deployment and Application Monitoring? Azure Functions provides first class support for Visual Studio Team Services and GitHub as well as built-in integration with Azure Application Insights to ensure you have a good handle on the operations and performance of your application. When you are ready to go deeper and want to build advanced cloud scenarios requiring state management and complex orchestration, you can use the Durable Functions feature which provides a code-friendly mechanism for doing those things while hiding the complexities.

If you now feel a little more energized about the possibilities of serverless computing, feel free to download and read the free Azure Serverless Computing Cookbook to see how to do all of the above things yourself.

Announcing improved multi-member Blockchain networks now available on Azure

$
0
0

We see strong customer interest in the Blockchain solutions that are available on the Azure Marketplace. As customers build production Blockchain scenarios, we understand that network reliability and health monitoring become increasingly important. Today, we are excited to announce significant enhancements to our Ethereum on Azure offering. These improvements are the first of a series of releases designed to enable production-ready consortium Blockchain networks suited for enterprise scenarios.

Through our customer engagements, we have identified and rolled out the following improvements:

  • High availability of Blockchain network presence: As a participant on a decentralized network, your nodes’ presence in the consensus process is critical towards achieving a fair and secure network. To ensure high-availability, we’ve incorporated cross-region Azure VM Scale Sets (Azure VMSS) and Azure Managed Disks. In the case that a node goes down, Azure VMSS will automatically recover the node, and join it back to the Ethereum network.  As active nodes may change over time, we take care of maintaining an accurate boot-node list, allowing other members to join the network.
  • Simplified deployment experience: Choosing the right network topology for your scenario can be difficult. We’ve invested significant effort into consolidating the various Ethereum network topologies into one experience, which allows users to walk through deployment options and only shows the information that is important to your scenario.
  • Monitoring and operational support: In the world of DevOps, the Blockchain network cannot be a blind spot within your application architecture. We appreciate the need to monitor, log, and analyze network health and Blockchain metrics. Now we support deployment of a customizable monitoring dashboard together with your Blockchain network to monitor telemetry of your Blockchain infrastructure. Today, you can monitor and create custom alerts on CPU, Memory, and Disk Capacity across your miner and transaction nodes.

image

Figure 1 OMS monitoring of Ethereum nodes

Our new template can deploy infrastructure for a standalone test network, the creation of a new consortium network, or the addition of a new member to an existing consortium network. Now, a single consortium member has the option to deploy their Blockchain footprint into multiple regions for redundancy and disaster recovery.  

These solution templates are designed to make it faster and easier to deploy and configure a multi-member consortium Ethereum network with minimal Azure and Ethereum knowledge. With a handful of user inputs and a single-click deployment, each member can provision their network footprint using Microsoft Azure compute, networking, storage, and other services across the globe. Each member's network footprint consists of a set of load-balanced transaction nodes with which an application or user can interface with to submit transactions, a set of mining nodes to manage consensus, and a VPN gateway for cross-tenant connectivity. Our deployment guide illustrates how to setup the VPN connection to link the gateways and create a fully configured multi-member Blockchain network.

A multi-member network architecture where each member has deployed to three regions is illustrated below. Each black perimeter below represents a resource group that contains the footprint for one member in the consortium.

clip_image002

Figure 2 Multi-Member Multi-Region Topology

It is important to note that although the template configures hub and spoke connectivity model between members, the consortium can change the connectivity model to fit their specific needs. 

For more information about the solution, you can visit our guided walkthrough.

Thank you for your continued enthusiasm and support for our Blockchain offers in Azure.  We're excited to release the enhanced version of these templates and encourage you to transition to this new offering to achieve high-availability and improved monitoring.

Global performance acceleration with Azure Traffic Manager

$
0
0

Gaining insights to customer traffic is imperative in providing a best in class user experience. With Traffic View, a new capability in Azure Traffic Manager, you can get rich information and powerful visualization that captures a heatmap of users’ experience. This allows you to understand traffic patterns globally and zoom in on specific geographic locations.

Azure Traffic Manager

Improve performance by leveraging Traffic View

Today, we are happy to announce the general availability (GA) of Traffic View, announced in public preview last fall. Since then we have received enthusiastic adoption and feedback. Insights provided by Traffic View include geographic location of your user base, latency experienced from these locations, and volume of traffic. These insights can then be used to optimize placement of your workloads in various Azure regions. You can use the visualizations provided through the Azure portal or you can download the raw data to do custom analysis with Power BI or similar tools.

To provide finer granularity, Traffic View can now be enabled at a profile level rather than subscription level. Starting this week, as we rollout the changes, you will have to re-enable Traffic View for the profiles you need. Traffic View will be charged starting May 1, 2018. You will only pay for the profiles you have enabled and the cost is based on the amount of data points processed to create the Traffic View. Please visit the Azure Traffic Manager pricing page for detailed pricing information.

Increasing performance routing accuracy for your users

Azure Traffic Manager’s performance routing method will ensure users are routed to the location that is nearest (minimal latency) to them. This is done by collecting network latency measurements from different subnets across the Internet to all Azure regions. In the vast majority of cases, these measurement locations overlap with the locations of your users. However, if you have an end user base that spans outside of this, Azure Traffic Manager can help you route them to the best Azure region by incorporating measurements that are taken from those specific users.

The first step in that process is identifying if you have users in locations where such additional latency information needs to be collected. Traffic View can provide this data since it records the locations from where your users are connecting to Azure, the latency information associated with that location, and the Azure region they were directed to. If that information is missing from the Traffic View data, then you can move on to the next step of providing this measurement data from your users.

Last fall during the Ignite conference we announced the public preview of Real User Measurements, which allows customers to embed an Azure provided JavaScript tag in their web property. When a user renders this tag, or uses the mobile application, measurements are taken from that device against Azure regions, reported back to Azure, and added to our network latency intelligence map. Thus, when one of your users connects from a location where new measurements were taken, the accuracy of the routing decision by Azure Traffic Manager increases, leading to an improved performance experience for your users.

We are thrilled to announce that Real User Measurements is now generally available for all Azure Traffic Manager customers. You can use the Azure portal to obtain the Real User Measurements JavaScript tag that can be embedded in your web site. There are no additional steps required to experience the increase in accuracy of performance routing for your users. As part of this GA announcement, we will be charging customers for their Real User Measurements usage starting on May 1, 2018. More details about Real User Measurements pricing can be obtained from the Azure Traffic Manager pricing page.

To get started on using these exciting features, please visit the Azure Traffic Manager getting started tutorial.

Text Recognition for Video in Microsoft Video Indexer

$
0
0

In Video Indexer, we have the capability for recognizing display text in videos. This blog explains some of the techniques we used to extract the best quality data. To start, take a look at the sequence of frames below.

imageimageimage
Source: Keynote-Delivering mission critical intelligence with SQL Server 2016

Did you manage to recognize the text in the images? It is highly reasonable that you did, without even noticing. However, using the best Optical Character Recognition (OCR) service for text extraction on these images, will yield broken words such as “icrosof”, “Mi”, “osoft” and “Micros”, simply because the text is partially hidden in each image.

There is a misconception that AI for video is simply extracting frames from a video and running computer vision algorithms on each video frame but video processing is much more than processing individual frames using an image processing algorithm – for example, with 30 frames per second, a minute-long video is 1800 frames producing a lot of data but, as we see above, not many meaningful words. There is a separate blog that covers how AI for video is different from AI for images.

While humans have cognitive abilities that allow them to complete hidden parts of the text and disambiguate local deficiencies resulting from bad video quality, direct application of OCR is not sufficient for automatic text extraction from videos.

In Video Indexer, we developed and implemented a dedicated approach to tackle this challenge. In this post, we will introduce the approach and see a couple of results that demonstrate its power.

Machine Learning in Action

Examining OCR results from various videos, there is an interesting pattern that can be observed. Many extracted text fragments suffer from errors or deficiencies coming from blocking of text or from difficulty to recognize characters algorithmically. The figure below demonstrates this concept using OCR detections from individual frames in a real video.

image

Video Indexer uses advanced Machine Learning techniques to address the challenge. First, we learn which strings are likely to come from the same visual source. Since objects may appear in different parts of the frame, we use a specialized algorithm to infer that multiple strings need to be consolidated into one output string. Then, we use a second algorithm to infer the correct string to be presented, by correcting the mistakes introduced by individual OCR detections.

As we see in many artificial intelligence examples, tasks that are easy and natural to us humans, require some heavy algorithms to be mimicked.

To see the algorithm in action, let us look at a short demo video by DirectX.

During the video, the company logo of “Lionhead Studios” appears at the bottom right corner of the screen. Since the scenes and background change during the video, the logo cannot always be seen clearly.

image

This results in noisy and inconsistent text extraction when using OCR as-is, which is sensitive to the noise in the background image. On the other hand using the interference algorithm, the overall consolidation algorithm robust this fluctuation, yielding more consistent and reliable text extraction. The table below, which shows the strings extracted by each of the methods highlights these differences.

OCR Consolidated OCR
LIONHEAD LIONHEAD
ONHEAD STUDIOS
D  
Q  
STUDIOS  
‘STUDIO  
STUD  
TUDIOS  
DIOS  

Combining evidence from visual and audial channels

Composed of audio and graphics, videos are complex objects of multiple dimensions which complete each other. Using information from other video elements can boost or reduce the confidence in text fragments identified by the OCR model. Going back to our previous example, knowing that the word “Microsoft” is being spoken multiple times during the keynote talk, increases our confidence it is a valid word. This is helpful to make a decision when visual evidence needs strengthening. It is also what we as humans do.

We incorporate this information in the algorithm, by factoring into the algorithms above weight to words that appear in the transcription.

Reducing errors with Language Detection

Video Indexer supports transcription in 10 widely spoken languages. Our core OCR technology supports a large set of characters: Latin, Arabic, Chinese, Japanese and Cyrillic. One of the challenges in video OCR is noise coming from detection of characters where other similar objects appear. When the set of characters is large, this can introduce noise.
A new patent-pending method implemented in VI enables us to make an intelligent decision about which OCR detections have high probability of not being a character, but another object. Automatic language detection creates a distribution of detected characters, which is combined with OCR detection confidence levels to make a decision.

More examples

You are invited to take a look at more examples in this gallery video. The words Adobe and Azure are blocked in many ways, but identified correctly by Video Indexer.

image

Let us see two more challenging examples, and how Video Indexer extracts the correct text.

image

image

image

image

Conclusions

Text recognition in video is a challenging task, that has a significant impact for various multimedia applications. Video Indexer uses advanced machine learning to consolidate OCR results, extracting meaningful and searchable text. Where the whole is greater than the sum of its parts, Video Indexer leverages other video components as an additional confidence layer to the OCR model.

You are most welcome to familiarize yourself with this new feature, on gallery examples as well as on your own examples, for videoindexer.ai.

Viewing all 10804 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>