160428 build2016 리뷰 3편

Edit

Customizing Your Device Experience with Assigned Access

Assigned Access 개요

  • Windows 10 Enterprise
    • 특정 사용자에 한개의 앱의 사용권한만 줄수 있는 시나리오 가능
    • ex) Kiosk single type device
  • Windows 10 Mobile Enterprise
    • 특정 사용자에게 기능과 설정의 요소별로 선택하여 세부적으로 권한부여 가능
    • ex) Kiosk single type device, 기업용 lockdown device, 기업용 shared device

Assigned access Windows 10

  • lock screen 위에서 디자인된 앱을 사용함.
  • Ctrl + Alt + Del 눌러서 사용자 전환 가능

개발 주의사항

  • GetCurrentView().Dispatcher 를 통해 UI 스레드 접근함.
  • 사용자 전환버튼 필요
    • Ctrl + Alt + Del 없이 사용자 전환할 수 있어야 함.
  • 매니페스트에 windows.aboveLockScreen 를 추가
  • MainView.Dispatcher 사용하지 말것

Assigned access Windows 10 Mobile

  • 기업용 앱 만들기에 특화됨
  • role이 리스트 형식으로 관리됨
    • application, settings
    • action center, quick action
    • start screen layout
    • H/W buttons lockdown/remapping
  • private windows store 배포 가능

WEHLockdown.xml

Enterprise role login experience

  • 사전요구사항
    • Mobile Extension SDK 설치 필요
    • enterpriseDeviceLockdown capability 필요
  • Windows.Embedded.DeviceLockdown APIs
    • DeviceLockdownProfile
      • ApplyLockdownProfileAsync
      • GetCurrentLockdownProfile
      • GetLockdownProfileInformation
      • GetSupportedLockdownProfiles
    • DeviceLockdownProfileInformation
      • Name
  • 로그인 관련 코드
protected override void OnNavigatedTo(NavigationEventArgs e){
    try
    {
        var currentRole = DeviceLockdownProfile.GetCurrentLockdownProfile();

        if (currentRole == Guid.Empty)
        {
            SignInStatus.Text = "You are not signed in.";
            canSignOut = false;
        }
        else
        {
            var currentProfile = DeviceLockdownProfile.GetLockdownProfileInformation(currentRole);
            SignInStatus.Text = "You are signed in as " + currentProfile.Name;
            canSignOut = true;
        }

        SignOutButton.IsEnabled = canSignOut;
        LoadApplicationUsers();
    }
    catch ()
    {
        rootPage.NotifyUser("Assigned Access is not configured on this device.", NotifyType.ErrorMessage);
    }
}

private void LoadApplicationUsers(){
    // Add the available roles.
    foreach (var roleId in DeviceLockdownProfile.GetSupportedLockdownProfiles())
    {
        DeviceLockdownProfileInformation profile = DeviceLockdownProfile.GetLockdownProfileInformation(roleId);
        UserRoles.Items.Add(new ListBoxItem() { Content = profile.Name, Tag = roleId });
    }

    if (UserRoles.Items.Count > 0)
    {
        UserRoles.SelectedIndex = 0;
        SignInButton.IsEnabled = true;
    }
}

private async Task SignInAsync(){
    ListBoxItem selectedItem = (ListBoxItem)UserRoles.SelectedItem;
    var selectedName = (string)selectedItem.Content;
    var selectedRole = (Guid)selectedItem.Tag;
    await DeviceLockdownProfile.ApplyLockdownProfileAsync(selectedRole);
}

private async Task SignOutAsync(){
    await DeviceLockdownProfile.ApplyLockdownProfileAsync(Guid.Empty);
} 
  • 매니페스트 코드
<?xml version="1.0" encoding="utf-8"?>

<Package ...>
    ...
  <Dependencies>
    <TargetDeviceFamily Name="Windows.Mobile" MinVersion="10.0.10240.0" MaxVersionTested="10.0.10586.0" />
  </Dependencies>
    ...
  <Capabilities>
    <rescap:Capability Name="enterpriseDeviceLockdown" />
  </Capabilities>
</Package>

참고자료

  • W10 Enterprise, Mobile을 위한 기업용 lockdown 방법
    • kiosk모드로 셋팅하는 방법
    • W10에서 특정앱으로 lockdown하는 방법
    • 기업용 Wifi 기본셋팅
    • lockdown xml 사용방법
    • W10 디바이스 리셋
  • Windows.Embedded.DeviceLockdown namespace
  • DeviceLockdown기능을 AD와 함께 사용하는 예제




Windows SDK for Facebook





Native iOS, Android, & Windows Apps from C# and XAML with Xamarin.Forms

iOS – 100% API Coverage

Android – 100% API Coverage





OneDrive API – Overview, What's New, and Scenarios





Introducing the File Picker for OneDrive and OneDrive for Business





todo doc

Introduction to Azure Table Storage
https://channel9.msdn.com/Events/Build/2016/P582
Universal App Model Overview: What's New in the UWP App Model
https://channel9.msdn.com/Events/Build/2016/B809
What's New in Windows UI/UX for Universal Windows Platform (UWP) Apps
https://channel9.msdn.com/Events/Build/2016/B853
SQL Database Technologies for Developers
https://channel9.msdn.com/Events/Build/2016/B814
Using HockeyApp with Xamarin Apps
https://channel9.msdn.com/Events/Build/2016/T668-R1
Deep Dive Into IOT Starter Kit App: Architecture and Getting Started on Building Your IOT Solution
https://channel9.msdn.com/Events/Build/2016/T673-R1
Pen and Ink: Inking at the Speed of Thought
https://channel9.msdn.com/Events/Build/2016/B865
Cross-Platform Mobile with Xamarin
https://channel9.msdn.com/Events/Build/2016/B836
Native iOS, Android, & Windows Apps from C# and XAML with Xamarin.Forms
https://channel9.msdn.com/Events/Build/2016/T667-R1
Become a Visual Studio 2015 Power User
https://channel9.msdn.com/Events/Build/2016/B819
Developer's Guide to Connecting Devices to Azure IoT
https://channel9.msdn.com/Events/Build/2016/B844
Windows 10 IoT Core: From Maker to Market
https://channel9.msdn.com/Events/Build/2016/B860
ASP.NET Core Deep Dive into MVC
https://channel9.msdn.com/Events/Build/2016/B812
Building Network-Aware Applications
https://channel9.msdn.com/Events/Build/2016/B828
Deploying ASP.NET Core Applications
https://channel9.msdn.com/Events/Build/2016/B811

todo video

Runtime Editing Tools for XAML
https://channel9.msdn.com/Events/Build/2016/P465
HockeyApp for UWP Apps: Beta Distribution, Crash Reporting and User Metrics
https://channel9.msdn.com/Events/Build/2016/P463
Modeling Data for NoSQL Document Databases
https://channel9.msdn.com/Events/Build/2016/P468
%23%20160428%20build2016%20%uB9AC%uBDF0%203%uD3B8%0A%0A@%28%uD669%uD604%uB3D9%20%uB178%uD2B8%uBD81%29%5B.net%2C%20build%2C%20uwp%2C%20iotcore%5D%0A%0A%5Btoc%5D%0A%0A%23%23%20Customizing%20Your%20Device%20Experience%20with%20Assigned%20Access%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/P508%0A%0A%23%23%23%20Assigned%20Access%20%uAC1C%uC694%0A-%20Windows%2010%20Enterprise%0A%20%20%20%20-%20%uD2B9%uC815%20%uC0AC%uC6A9%uC790%uC5D0%20%uD55C%uAC1C%uC758%20%uC571%uC758%20%uC0AC%uC6A9%uAD8C%uD55C%uB9CC%20%uC904%uC218%20%uC788%uB294%20%uC2DC%uB098%uB9AC%uC624%20%uAC00%uB2A5%20%20%0A%20%20%20%20-%20ex%29%20Kiosk%20single%20type%20device%0A-%20Windows%2010%20Mobile%20Enterprise%0A%20%20%20%20-%20%uD2B9%uC815%20%uC0AC%uC6A9%uC790%uC5D0%uAC8C%20%uAE30%uB2A5%uACFC%20%uC124%uC815%uC758%20%uC694%uC18C%uBCC4%uB85C%20%uC120%uD0DD%uD558%uC5EC%20%uC138%uBD80%uC801%uC73C%uB85C%20%uAD8C%uD55C%uBD80%uC5EC%20%uAC00%uB2A5%0A%20%20%20%20-%20ex%29%20Kiosk%20single%20type%20device%2C%20%uAE30%uC5C5%uC6A9%20lockdown%20device%2C%20%uAE30%uC5C5%uC6A9%20shared%20device%0A%0A%23%23%23%20Assigned%20access%20Windows%2010%0A-%20lock%20screen%20%uC704%uC5D0%uC11C%20%uB514%uC790%uC778%uB41C%20%uC571%uC744%20%uC0AC%uC6A9%uD568.%0A-%20Ctrl%20+%20Alt%20+%20Del%20%uB20C%uB7EC%uC11C%20%uC0AC%uC6A9%uC790%20%uC804%uD658%20%uAC00%uB2A5%0A-%20%21%5BAlt%20text%5D%28./1462249999283.png%29%0A%20%0A%23%23%23%23%20%uAC1C%uBC1C%20%uC8FC%uC758%uC0AC%uD56D%0A-%20GetCurrentView%28%29.Dispatcher%20%uB97C%20%uD1B5%uD574%20UI%20%uC2A4%uB808%uB4DC%20%uC811%uADFC%uD568.%0A-%20%uC0AC%uC6A9%uC790%20%uC804%uD658%uBC84%uD2BC%20%uD544%uC694%20%0A%20%20%20%20-%20Ctrl%20+%20Alt%20+%20Del%20%uC5C6%uC774%20%uC0AC%uC6A9%uC790%20%uC804%uD658%uD560%20%uC218%20%uC788%uC5B4%uC57C%20%uD568.%0A-%20%uB9E4%uB2C8%uD398%uC2A4%uD2B8%uC5D0%20windows.aboveLockScreen%20%uB97C%20%uCD94%uAC00%0A-%20MainView.Dispatcher%20%uC0AC%uC6A9%uD558%uC9C0%20%uB9D0%uAC83%0A%0A%23%23%23%20Assigned%20access%20Windows%2010%20Mobile%0A-%20%uAE30%uC5C5%uC6A9%20%uC571%20%uB9CC%uB4E4%uAE30%uC5D0%20%uD2B9%uD654%uB428%0A-%20role%uC774%20%uB9AC%uC2A4%uD2B8%20%uD615%uC2DD%uC73C%uB85C%20%uAD00%uB9AC%uB428%0A%20%20%20%20-%20application%2C%20settings%0A%20%20%20%20-%20action%20center%2C%20quick%20action%0A%20%20%20%20-%20start%20screen%20layout%0A%20%20%20%20-%20H/W%20buttons%20lockdown/remapping%0A-%20private%20windows%20store%20%uBC30%uD3EC%20%uAC00%uB2A5%0A%0A%23%23%23%23%20WEHLockdown.xml%0A%21%5BAlt%20text%5D%28./1462252057866.png%29%0A%0A%23%23%23%23%20Enterprise%20role%20login%20experience%0A-%20%uC0AC%uC804%uC694%uAD6C%uC0AC%uD56D%0A%20%20%20%20-%20Mobile%20Extension%20SDK%20%uC124%uCE58%20%uD544%uC694%0A%20%20%20%20-%20enterpriseDeviceLockdown%20capability%20%uD544%uC694%0A-%20Windows.Embedded.DeviceLockdown%20APIs%0A%20%20%20%20-%20DeviceLockdownProfile%0A%20%20%20%20%20%20%20%20-%20ApplyLockdownProfileAsync%0A%20%20%20%20%20%20%20%20-%20GetCurrentLockdownProfile%0A%20%20%20%20%20%20%20%20-%20GetLockdownProfileInformation%0A%20%20%20%20%20%20%20%20-%20GetSupportedLockdownProfiles%0A%20%20%20%20-%20DeviceLockdownProfileInformation%0A%20%20%20%20%20%20%20%20-%20Name%0A-%20%uB85C%uADF8%uC778%20%uAD00%uB828%20%uCF54%uB4DC%0A%60%60%60csharp%0Aprotected%20override%20void%20OnNavigatedTo%28NavigationEventArgs%20e%29%0A%7B%0A%20%20%20%20try%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20var%20currentRole%20%3D%20DeviceLockdownProfile.GetCurrentLockdownProfile%28%29%3B%0A%0A%20%20%20%20%20%20%20%20if%20%28currentRole%20%3D%3D%20Guid.Empty%29%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20SignInStatus.Text%20%3D%20%22You%20are%20not%20signed%20in.%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20canSignOut%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20currentProfile%20%3D%20DeviceLockdownProfile.GetLockdownProfileInformation%28currentRole%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20SignInStatus.Text%20%3D%20%22You%20are%20signed%20in%20as%20%22%20+%20currentProfile.Name%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20canSignOut%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20SignOutButton.IsEnabled%20%3D%20canSignOut%3B%0A%20%20%20%20%20%20%20%20LoadApplicationUsers%28%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%20%28%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20rootPage.NotifyUser%28%22Assigned%20Access%20is%20not%20configured%20on%20this%20device.%22%2C%20NotifyType.ErrorMessage%29%3B%0A%20%20%20%20%7D%0A%7D%0A%0Aprivate%20void%20LoadApplicationUsers%28%29%0A%7B%0A%20%20%20%20//%20Add%20the%20available%20roles.%0A%20%20%20%20foreach%20%28var%20roleId%20in%20DeviceLockdownProfile.GetSupportedLockdownProfiles%28%29%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20DeviceLockdownProfileInformation%20profile%20%3D%20DeviceLockdownProfile.GetLockdownProfileInformation%28roleId%29%3B%0A%20%20%20%20%20%20%20%20UserRoles.Items.Add%28new%20ListBoxItem%28%29%20%7B%20Content%20%3D%20profile.Name%2C%20Tag%20%3D%20roleId%20%7D%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if%20%28UserRoles.Items.Count%20%3E%200%29%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20UserRoles.SelectedIndex%20%3D%200%3B%0A%20%20%20%20%20%20%20%20SignInButton.IsEnabled%20%3D%20true%3B%0A%20%20%20%20%7D%0A%7D%0A%0Aprivate%20async%20Task%20SignInAsync%28%29%0A%7B%0A%20%20%20%20ListBoxItem%20selectedItem%20%3D%20%28ListBoxItem%29UserRoles.SelectedItem%3B%0A%20%20%20%20var%20selectedName%20%3D%20%28string%29selectedItem.Content%3B%0A%20%20%20%20var%20selectedRole%20%3D%20%28Guid%29selectedItem.Tag%3B%0A%20%20%20%20await%20DeviceLockdownProfile.ApplyLockdownProfileAsync%28selectedRole%29%3B%0A%7D%0A%0Aprivate%20async%20Task%20SignOutAsync%28%29%0A%7B%0A%20%20%20%20await%20DeviceLockdownProfile.ApplyLockdownProfileAsync%28Guid.Empty%29%3B%0A%7D%20%0A%60%60%60%0A%0A-%20%uB9E4%uB2C8%uD398%uC2A4%uD2B8%20%uCF54%uB4DC%0A%60%60%60xml%0A%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0A%0A%3CPackage%20...%3E%0A%20%20%20%20...%0A%20%20%3CDependencies%3E%0A%20%20%20%20%3CTargetDeviceFamily%20Name%3D%22Windows.Mobile%22%20MinVersion%3D%2210.0.10240.0%22%20MaxVersionTested%3D%2210.0.10586.0%22%20/%3E%0A%20%20%3C/Dependencies%3E%0A%20%20%20%20...%0A%20%20%3CCapabilities%3E%0A%20%20%20%20%3Crescap%3ACapability%20Name%3D%22enterpriseDeviceLockdown%22%20/%3E%0A%20%20%3C/Capabilities%3E%0A%3C/Package%3E%0A%60%60%60%0A%0A%23%23%23%20%uCC38%uACE0%uC790%uB8CC%0Ahttps%3A//technet.microsoft.com/ko-kr/itpro/windows/manage/lock-down-windows-10%0A-%20W10%20Enterprise%2C%20Mobile%uC744%20%uC704%uD55C%20%uAE30%uC5C5%uC6A9%20lockdown%20%uBC29%uBC95%0A%20%20%20%20-%20kiosk%uBAA8%uB4DC%uB85C%20%uC14B%uD305%uD558%uB294%20%uBC29%uBC95%0A%20%20%20%20-%20W10%uC5D0%uC11C%20%uD2B9%uC815%uC571%uC73C%uB85C%20lockdown%uD558%uB294%20%uBC29%uBC95%0A%20%20%20%20-%20%uAE30%uC5C5%uC6A9%20Wifi%20%uAE30%uBCF8%uC14B%uD305%0A%20%20%20%20-%20lockdown%20xml%20%uC0AC%uC6A9%uBC29%uBC95%0A%20%20%20%20-%20W10%20%uB514%uBC14%uC774%uC2A4%20%uB9AC%uC14B%0A%20%20%20%20%0Ahttps%3A//msdn.microsoft.com/en-us/library/windows/hardware/windows.embedded.devicelockdown.aspx%0A-%20Windows.Embedded.DeviceLockdown%20namespace%0A%0Ahttps%3A//github.com/Microsoft/Windows-universal-samples/tree/master/Samples/DeviceLockdownAzureLogin%0A-%20DeviceLockdown%uAE30%uB2A5%uC744%20AD%uC640%20%uD568%uAED8%20%uC0AC%uC6A9%uD558%uB294%20%uC608%uC81C%0A%0A%0A%3Cbr/%3E%0A%3Cbr/%3E%0A%3Cbr/%3E%0A%0A%23%23%20Windows%20SDK%20for%20Facebook%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/P544%0A%0A-%20http%3A//microsoft.github.io/winsdkfb/sample/%0A-%20https%3A//github.com/Microsoft/winsdkfb%0A%20%20%20%20-%20%uD398%uC774%uC2A4%uBD81%20UWP%20SDK%20%uC0AC%uC6A9%20%uAC00%uC774%uB4DC%0A%20%20%20%20-%20%uD398%uBD81%20%uB85C%uADF8%uC778%2C%20%uD504%uB85C%uD544%uBD88%uB7EC%uC624%uAE30%2C%20%uC0AC%uC9C4%uBD88%uB7EC%uC624%uAE30%2C%20%uB85C%uAE34%uB41C%20%uCE5C%uAD6C%uB9AC%uC2A4%uD2B8%20%uBD88%uB7EC%uC624%uAE30%20%uAC00%uB2A5%0A%0A%3Cbr/%3E%0A%3Cbr/%3E%0A%3Cbr/%3E%0A%0A%0A%0A%23%23%20Native%20iOS%2C%20Android%2C%20%26%20Windows%20Apps%20from%20C%23%20and%20XAML%20with%20Xamarin.Forms%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/P548%0A%0A%23%23%23%20iOS%20%u2013%20100%25%20API%20Coverage%0A%21%5BAlt%20text%5D%28./1462278512851.png%29%0A%0A%23%23%23%20Android%20%u2013%20100%25%20API%20Coverage%0A%21%5BAlt%20text%5D%28./1462278540526.png%29%0A%0A%3Cbr/%3E%0A%3Cbr/%3E%0A%3Cbr/%3E%0A%0A%23%23%20OneDrive%20API%20%u2013%20Overview%2C%20What%u2019s%20New%2C%20and%20Scenarios%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/P559%0A%20-%20https%3A//dev.onedrive.com/%0A%20%20%20%20-%20onedrive%20open%20api%0A%0A%3Cbr/%3E%0A%3Cbr/%3E%0A%3Cbr/%3E%0A%0A%23%23%20Introducing%20the%20File%20Picker%20for%20OneDrive%20and%20OneDrive%20for%20Business%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/P565%0A-%20https%3A//github.com/rgregg/onedrive-markdown-editor-sample%0A%20%20%20%20-%20javascript%20%uC608%uC81C%0A%20%20%20%20-%20onedrive%20%uC5D0%20%uD30C%uC77C%20%uC77D%uAE30/%uC4F0%uAE30%2C%20%uB85C%uADF8%uC778%20%uB2E4%uC774%uC5BC%uB85C%uADF8%0A%0A%0A%3Cbr/%3E%0A%3Cbr/%3E%0A%3Cbr/%3E%0A%0A%23%23%20todo%20doc%0A%0A%0A%0AMicrosoft%20Graph%20Overview%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/P569%0A%0AIntroduction%20to%20Azure%20Table%20Storage%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/P582%0A%0AUniversal%20App%20Model%20Overview%3A%20What%u2019s%20New%20in%20the%20UWP%20App%20Model%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B809%0A%0AWhat%27s%20New%20in%20Windows%20UI/UX%20for%20Universal%20Windows%20Platform%20%28UWP%29%20Apps%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B853%0A%0ALinux%20Command%20Line%20on%20Windows%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/C906%0A%0ASQL%20Database%20Technologies%20for%20Developers%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B814%0A%0AUsing%20HockeyApp%20with%20Xamarin%20Apps%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/T668-R1%0A%0ADeep%20Dive%20Into%20IOT%20Starter%20Kit%20App%3A%20Architecture%20and%20Getting%20Started%20on%20Building%20Your%20IOT%20Solution%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/T673-R1%0A%0APen%20and%20Ink%3A%20Inking%20at%20the%20Speed%20of%20Thought%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B865%0A%0ACross-Platform%20Mobile%20with%20Xamarin%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B836%0A%0ANative%20iOS%2C%20Android%2C%20%26%20Windows%20Apps%20from%20C%23%20and%20XAML%20with%20Xamarin.Forms%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/T667-R1%0A%0A.NET%20Overview%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B891%0A%0AThe%20Future%20of%20C%23%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B889%0A%0ABecome%20a%20Visual%20Studio%202015%20Power%20User%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B819%0A%0ADeveloper%27s%20Guide%20to%20Connecting%20Devices%20to%20Azure%20IoT%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B844%0A%0AEntity%20Framework%20Core%201.0%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B852%0A%0AWindows%2010%20IoT%20Core%3A%20From%20Maker%20to%20Market%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B860%0A%0AASP.NET%20Core%20Deep%20Dive%20into%20MVC%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B812%0A%0ABuilding%20Network-Aware%20Applications%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B828%0A%0ADeploying%20ASP.NET%20Core%20Applications%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/B811%0A%0A%23%23%20todo%20video%0A%0ARuntime%20Editing%20Tools%20for%20XAML%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/P465%0A%0AAzure%20Data%20Lake%20Deep%20Dive%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/P413%0A%0AHockeyApp%20for%20UWP%20Apps%3A%20Beta%20Distribution%2C%20Crash%20Reporting%20and%20User%20Metrics%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/P463%0A%0AModeling%20Data%20for%20NoSQL%20Document%20Databases%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/P468%0A%0ASelecting%20the%20Right%20VM%20Size%0Ahttps%3A//channel9.msdn.com/Events/Build/2016/P523%0A

이 글은 Evernote에서 작성되었습니다. Evernote는 하나의 업무 공간입니다. Evernote를 다운로드하세요.

댓글