내보내기(0) 인쇄
모두 확장

Media Services SDK for .NET을 사용하여 자산 대량 수집

업데이트 날짜: 2015년 2월

큰 자산 파일을 업로드하면 자산 생성 중 병목 현상이 발생할 수 있습니다. 자산을 대량으로 수집, 즉 "대량 수집"하려면 업로드 프로세스에서 자산 만들기를 분리해야 합니다. 대량 수집을 사용하려면 자산과 해당 자산이 연결된 파일을 설명하는 매니페스트(IngestManifest)를 만듭니다. 그런 다음 선택한 업로드 방법을 사용하여 매니페스트의 Blob 컨테이너로 연결된 파일을 업로드합니다. Microsoft Azure 미디어 서비스에서는 매니페스트에 연결된 Blob 컨테이너를 감시합니다. 파일이 Blob 컨테이너로 업로드되면 Microsoft Azure 미디어 서비스에서는 매니페스트(IngestManifestAsset)의 자산 구성을 기반으로 자산 만들기를 완료합니다.

이 항목에서는 Microsoft Azure 미디어 서비스 SDK for .NET을 사용하여 자산을 대량 수집하는 방법에 대해 설명합니다. REST API를 사용하여 자산을 대량으로 수집하는 방법에 대한 자세한 내용은 REST API를 사용하여 대량으로 자산 수집을 참조하세요.

note참고
미디어 서비스에서는 스트리밍 콘텐츠의 URL 작성 시 IAssetFile.Name 속성의 값을 사용합니다(예: http://{WAMSAccount}.origin.mediaservices.windows.net/{GUID}/{IAssetFile.Name}/streamingParameters). 따라서 퍼센트 인코딩이 허용되지 않습니다. 이름 속성의 값에는 퍼센트 인코딩 예약 문자( !*'();:@ !*'();:@&=+$,/?%#[]")를 사용할 수 없으며, 파일 이름 확장명에 ‘.’를 하나만 사용할 수 있습니다.

Important중요
이 항목의 각 코드 예제에서는 다운로드한 프로젝트(프로젝트에 대한 솔루션 파일은 MediaServicesSDKSamples.sln임)에 있는 하나 이상의 메서드를 보여 줍니다. 특정 예제에 대한 코드를 찾으려면 다운로드한 프로젝트에서 예제 메서드 이름을 검색합니다. 특정 코드 예제를 실행하려면 필요한 매개 변수를 사용하여 연결된 메서드를 호출합니다.

대량 수집의 기본 워크플로는 다음과 같은 섹션으로 구분됩니다.

note참고
Microsoft Azure 미디어 서비스 SDK를 사용하여 응용 프로그램을 개발하려면 먼저 Connect to Media Services Using the Media Services SDK 항목의 설명대로 미디어 서비스 서버 컨텍스트에 대한 참조가 있어야 합니다. 컨텍스트 개체는 다음 코드 예제에서 context라는 변수로 나타냅니다.

IngestManifest는 연결된 자산 파일과 함께 대량 수집을 통해 생성되는 자산 집합을 나타냅니다. 새 IngestManifest를 만들려면 서버 컨텍스트에서 IngestManifests 컬렉션에 의해 노출되는 Create 메서드를 호출합니다. 이 메서드는 제공된 매니페스트 이름으로 새 IngestManifest를 만듭니다.

전체 예제 코드는 이 항목의 끝에 있는 예제 코드 섹션에서 제공됩니다.

IIngestManifest manifest = context.IngestManifests.Create(name);

대량 IngestManifest와 연결할 자산을 만듭니다. 이러한 자산은 서버 컨텍스트에서 Assets 컬렉션을 사용하여 만듭니다. 대량 수집할 자산에서 원하는 암호화 옵션을 구성합니다.

전체 예제 코드는 이 항목의 끝에 있는 예제 코드 섹션에서 제공됩니다.

// Create the assets that will be associated with this bulk ingest manifest
IAsset destAsset1 = _context.Assets.Create(name + "_asset_1", AssetCreationOptions.None);
IAsset destAsset2 = _context.Assets.Create(name + "_asset_2", AssetCreationOptions.None);

IngestManifestAsset은 대량 수집을 위해 Asset을 대량 IngestManifest와 연결합니다. 또한 각 Asset을 구성할 AssetFiles도 연결합니다. IngestManifestAsset을 만들려면 서버 컨텍스트에서 Create 메서드를 사용합니다.

다음 예제에서는 이전에 만든 두 개의 자산을 대량 수집 매니페스트에 연결하는 새 IngestManifestAssets 두 개를 추가하는 방법을 보여 줍니다. 각 IngestManifestAsset은 대량 수집 중 각 자산에 대해 업로드된 파일 집합도 연결합니다. 파일 경로는 MediaServiceSDKSamples 프로젝트의 일부입니다.

전체 예제 코드는 이 항목의 끝에 있는 예제 코드 섹션에서 제공됩니다.


string filename1 = _singleInputMp4Path;
string filename2 = _primaryFilePath;
string filename3 = _singleInputFilePath;

IIngestManifestAsset bulkAsset1 =  manifest.IngestManifestAssets.Create(destAsset1, new[] { filename1 });
IIngestManifestAsset bulkAsset2 =  manifest.IngestManifestAssets.Create(destAsset2, new[] { filename2, filename3 });

IngestManifestBlobStorageUriForUpload 속성에서 제공하는 Blob 저장소 컨테이너 URI에 자산 파일을 업로드할 수 있는 모든 고속 클라이언트 응용 프로그램을 사용할 수 있습니다. 눈에 띄는 고속 업로드 서비스 중 하나는 Aspera On Demand for Azure Application입니다. 또한 다음 코드 예제에 표시된 대로 자산 파일을 업로드하는 코드를 작성할 수 있습니다.

static void UploadBlobFile(string destBlobURI, string filename)
{
    Task copytask = new Task(() =>
    {
        var storageaccount = new CloudStorageAccount(new StorageCredentials(_storageAccountName, _storageAccountKey), true);
        CloudBlobClient blobClient = storageaccount.CreateCloudBlobClient();
        CloudBlobContainer blobContainer = blobClient.GetContainerReference(destBlobURI);

        string[] splitfilename = filename.Split('\\');
        var blob = blobContainer.GetBlockBlobReference(splitfilename[splitfilename.Length - 1]);

        using (var stream = System.IO.File.OpenRead(filename))
            blob.UploadFromStream(stream);

        lock (consoleWriteLock)
        {
            Console.WriteLine("Upload for {0} completed.", filename);
        }
    });

    copytask.Start();
}

이 항목에 사용된 샘플에 대해 자산 파일을 업로드하는 코드는 다음 코드 예제에 표시되어 있습니다.


UploadBlobFile(manifest.BlobStorageUriForUpload, filename1);
UploadBlobFile(manifest.BlobStorageUriForUpload, filename2);
UploadBlobFile(manifest.BlobStorageUriForUpload, filename3);

IngestManifestStatistics 속성을 폴링하여 IngestManifest에 연결된 모든 자산을 대량 수집하는 진행률을 확인할 수 있습니다. 진행률 정보를 업데이트하려면 Statistics 속성을 폴링할 때마다 새로운 서버 컨텍스트를 사용해야 합니다.

다음 예제에서는 자체 IdIngestManifest를 폴링하는 방법을 보여 줍니다.

전체 예제 코드는 이 항목의 끝에 있는 예제 코드 섹션에서 제공됩니다.

static void MonitorBulkManifest(string manifestID)
{
   bool bContinue = true;
   while (bContinue)
   {
      CloudMediaContext context = GetContext();
      IIngestManifest manifest = context.IngestManifests.Where(m => m.Id == manifestID).FirstOrDefault();

      if (manifest != null)
      {
         lock(consoleWriteLock)
         {
            Console.WriteLine("\nWaiting on all file uploads.");
            Console.WriteLine("PendingFilesCount  : {0}", manifest.Statistics.PendingFilesCount);
            Console.WriteLine("FinishedFilesCount : {0}", manifest.Statistics.FinishedFilesCount);
            Console.WriteLine("{0}% complete.\n", (float)manifest.Statistics.FinishedFilesCount / (float)(manifest.Statistics.FinishedFilesCount + manifest.Statistics.PendingFilesCount) * 100);

            if (manifest.Statistics.PendingFilesCount == 0)
            {
               Console.WriteLine("Completed\n");
               bContinue = false;
            }
         }

         if (manifest.Statistics.FinishedFilesCount < manifest.Statistics.PendingFilesCount)
            Thread.Sleep(60000);
      }
      else //=== Manifest is null ===//
         bContinue = false;
   }
}

다음 예제 코드는 MediaServicesSDKSample 프로젝트에서 파생된 것입니다.

using System;
using System.Configuration;
using System.Globalization;
using System.IO;
using System.Net;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using System.Xml;
using System.Linq;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.MediaServices.Client;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.WindowsAzure.Storage.Auth;
using System.Collections.Generic;
using System.Reflection;

namespace Microsoft.Samples.WindowsAzureMediaServicesSDK.BulkIngest
{
    class Program
    {
        private static CloudMediaContext _context = null;
        private static readonly string _supportFiles = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\..\..\supportFiles";
        private static readonly string _singleInputFilePath =
            Path.GetFullPath(_supportFiles + @"\multifile\interview2.wmv");
        private static readonly string _singleInputMp4Path =
            Path.GetFullPath(_supportFiles + @"\multifile\BigBuckBunny.mp4");
        private static readonly string _primaryFilePath =
            Path.GetFullPath(_supportFiles + @"\multifile\interview1.wmv");

        private static System.Object consoleWriteLock = new Object();

        private static readonly string _accountName =
            ConfigurationManager.AppSettings["MediaServicesAccountName"];
        private static readonly string _accountKey =
            ConfigurationManager.AppSettings["MediaServicesAccountKey"];

        // Media Services storage account credentials.
        private static readonly string _storageAccountName =
            ConfigurationManager.AppSettings["MediaServicesStorageAccountName"];
        private static readonly string _storageAccountKey =
            ConfigurationManager.AppSettings["MediaServicesStorageAccountKey"];

        static void Main(string[] args)
        {
            _context = GetContext();
            string manifestName = "TestManifest";

            CreateBulkIngestManifest(manifestName);
            ListIngestManifests();
            DeleteBulkManifest(manifestName);
        }


        static CloudMediaContext GetContext()
        {
            return new CloudMediaContext(_accountName, _accountKey);
        }

        static IIngestManifest CreateBulkIngestManifest(string name)
        {
            Console.WriteLine("\n===============================================");
            Console.WriteLine("========[ CREATE BULK INGEST MANIFEST ]========");
            Console.WriteLine("===============================================\n");


            IIngestManifest manifest = _context.IngestManifests.Create(name);

            IAsset destAsset1 = _context.Assets.Create(name + "_asset_1", AssetCreationOptions.None);
            IAsset destAsset2 = _context.Assets.Create(name + "_asset_2", AssetCreationOptions.None);

            string filename1 = _singleInputMp4Path;
            string filename2 = _primaryFilePath;
            string filename3 = _singleInputFilePath;

            //=== Preently, each asset filename uploaded must be unique for an individual Bulk ingest manifest. So two assets can not have ===//
            //=== the same asset filename or an exception will be thrown for duplicate filename.                                           ===//
            IIngestManifestAsset bulkAsset1 = manifest.IngestManifestAssets.Create(destAsset1, new[] { filename1 });
            IIngestManifestAsset bulkAsset2 = manifest.IngestManifestAssets.Create(destAsset2, new[] { filename2, filename3 });

            ListIngestManifests(manifest.Id);

            Console.WriteLine("\n===============================================");
            Console.WriteLine("===[ BULK INGEST MANIFEST MONITOR FILE COPY]===");
            Console.WriteLine("===============================================\n");

            UploadBlobFile(manifest.BlobStorageUriForUpload, filename1);
            UploadBlobFile(manifest.BlobStorageUriForUpload, filename2);
            UploadBlobFile(manifest.BlobStorageUriForUpload, filename3);

            MonitorBulkManifest(manifest.Id);
            ListIngestManifests(manifest.Id);

            return manifest;
        }


        // Upload a file into Blob Storage
        static void UploadBlobFile(string destBlobURI, string filename)
        {
            Task copytask = new Task(() =>
            {
                var storageaccount = new CloudStorageAccount(new StorageCredentials(_storageAccountName, _storageAccountKey), true);
                CloudBlobClient blobClient = storageaccount.CreateCloudBlobClient();
                CloudBlobContainer blobContainer = blobClient.GetContainerReference(destBlobURI);

                string[] splitfilename = filename.Split('\\');
                var blob = blobContainer.GetBlockBlobReference(splitfilename[splitfilename.Length - 1]);

                using (var stream = System.IO.File.OpenRead(filename))
                    blob.UploadFromStream(stream);

                lock (consoleWriteLock)
                {
                    Console.WriteLine("Upload for {0} completed.", filename);
                }
            });

            copytask.Start();
        }

        static void DeleteBulkManifest(string name)
        {
            Console.WriteLine("\n===============================================");
            Console.WriteLine("=======[ DELETE BULK INGEST MANIFESTS ]========");
            Console.WriteLine("===============================================\n");

            var manifest = _context.IngestManifests.Where(c => c.Name == name).FirstOrDefault();
            DeleteBulkManifestAssets(manifest.Id);

            Console.WriteLine("Deleting Manifest...\n\tName : {0}\n\tManifest ID : {1}...", manifest.Name, manifest.Id);
            manifest.Delete();
            Console.WriteLine("Delete Complete.\n");
        }

        static void DeleteBulkManifestAssets(string manifestID)
        {
            Console.WriteLine("\n===============================================");
            Console.WriteLine("=====[ DELETE BULK INGEST MANIFEST ASSETS ]====");
            Console.WriteLine("===============================================\n");

            foreach (IIngestManifest manifest in _context.IngestManifests.Where(c => c.Id == manifestID))
            {
                Console.WriteLine("Deleting assets for manifest named : {0}...\n", manifest.Name);
                foreach (IIngestManifestAsset manifestAsset in manifest.IngestManifestAssets)
                {
                    foreach (ILocator locator in manifestAsset.Asset.Locators)
                    {
                        Console.WriteLine("Deleting locator {0} for asset {1}", locator.Path, manifestAsset.Asset.Id);
                        locator.Delete();
                    }
                    Console.WriteLine("Deleting asset {0}\n", manifestAsset.Asset.Id);
                    manifestAsset.Asset.Delete();
                }
            }
        }

        static void MonitorBulkManifest(string manifestID)
        {
            bool bContinue = true;
            while (bContinue)
            {
                //=== We need a new context here because IIngestManifestStatistics is considered an expensive ===//
                //=== property and not updated realtime for a context.                                        ===//
                CloudMediaContext context = GetContext();

                IIngestManifest manifest = context.IngestManifests.Where(m => m.Id == manifestID).FirstOrDefault();

                if (manifest != null)
                {
                    lock (consoleWriteLock)
                    {
                        Console.WriteLine("\nWaiting on all file uploads.");
                        Console.WriteLine("PendingFilesCount  : {0}", manifest.Statistics.PendingFilesCount);
                        Console.WriteLine("FinishedFilesCount : {0}", manifest.Statistics.FinishedFilesCount);
                        Console.WriteLine("{0}% complete.\n", (float)manifest.Statistics.FinishedFilesCount / (float)(manifest.Statistics.FinishedFilesCount + manifest.Statistics.PendingFilesCount) * 100);


                        if (manifest.Statistics.PendingFilesCount == 0)
                        {
                            Console.WriteLine("Completed\n");
                            bContinue = false;
                        }
                    }

                    if (manifest.Statistics.FinishedFilesCount < manifest.Statistics.PendingFilesCount)
                    {
                        Thread.Sleep(60000);
                    }
                }
                else //=== Manifest is null ===//
                    bContinue = false;
            }
        }

        static IQueryable<IIngestManifest> ListIngestManifests(string manifestId = "")
        {
            CloudMediaContext context = GetContext();

            Console.WriteLine("\n===============================================");
            Console.WriteLine("===========[ BULK INGEST MANIFESTS ]===========");
            Console.WriteLine("===============================================\n");

            IQueryable<IIngestManifest> manifests = null;

            //=== If an Id is supplied, list the manifest with that Id. Otherwise, list all manifests ===//
            if (manifestId == "")
                manifests = context.IngestManifests;
            else
                manifests = context.IngestManifests.Where(m => m.Id == manifestId);

            foreach (IIngestManifest manifest in manifests)
            {
                Console.WriteLine("Manifest Name  : {0}", manifest.Name);
                Console.WriteLine("Manifest State : {0}", manifest.State.ToString());
                Console.WriteLine("Manifest Id    : {0}", manifest.Id);
                Console.WriteLine("Manifest Last Modified      : {0}", manifest.LastModified.ToLocalTime().ToString());
                Console.WriteLine("Manifest PendingFilesCount  : {0}", manifest.Statistics.PendingFilesCount);
                Console.WriteLine("Manifest FinishedFilesCount : {0}", manifest.Statistics.FinishedFilesCount);
                Console.WriteLine("Manifest BLOB URI : {0}\n", manifest.BlobStorageUriForUpload);

                foreach (IIngestManifestAsset manifestasset in manifest.IngestManifestAssets)
                {
                    Console.WriteLine("\tAsset Name    : {0}", manifestasset.Asset.Name);
                    Console.WriteLine("\tAsset ID      : {0}", manifestasset.Asset.Id);
                    Console.WriteLine("\tAsset Options : {0}", manifestasset.Asset.Options.ToString());
                    Console.WriteLine("\tAsset State   : {0}", manifestasset.Asset.State.ToString());
                    Console.WriteLine("\tAsset Files....");

                    foreach (IIngestManifestFile assetfile in manifestasset.IngestManifestFiles)
                    {
                        Console.WriteLine("\t\t{0}\n\t\tFile State : {1}\n", assetfile.Name, assetfile.State.ToString());
                    }
                    Console.WriteLine("");
                }
            }

            return manifests;
        }
    }
}

App.Config 파일 예제

Important중요
샘플을 실행하려면 먼저 MediaServicesAccountName, MediaServicesAccountKey, MediaServicesStorageAccountName 및 MediaServicesStorageAccountKey에 대한 값을 추가해야 합니다. 이러한 값은 Azure 포털로 이동하여 Azure 미디어 서비스 계정을 선택하고 키 관리 아이콘을 클릭하여 찾을 수 있습니다. Azure 저장소 계정에 대해서도 동일한 작업을 수행합니다.

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
  </startup>
  <appSettings>
    <add key="MediaServicesAccountName" value="Enter Your Azure Media Services Account Name " />
    <add key="MediaServicesAccountKey" value="Enter Your Azure Media Services Account Key " />
    <add key="MediaServicesStorageAccountName" value=" Enter the Storage Account Name used with Azure Media Services " />
    <add key="MediaServicesStorageAccountKey" value=" Enter the Storage Account Key used with Azure Media Services " />
  </appSettings>
</configuration>

예제 코드의 예제 출력입니다.


===============================================
========[ CREATE BULK INGEST MANIFEST ]========
===============================================


===============================================
===========[ BULK INGEST MANIFESTS ]===========
===============================================

Manifest Name  : TestManifest
Manifest State : Activating
Manifest Id    : nb:mid:UUID:47e2efdf-8ec8-6143-a4ac-bf43efba35c8
Manifest Last Modified      : 2/25/2013 1:50:09 PM
Manifest PendingFilesCount  : 3
Manifest FinishedFilesCount : 0
Manifest BLOB URI : https://mediasvcm13w6rsvm521t.blob.core.windows.net/manifest
-402dcea0-411c-48f2-90fc-805c63a92a72

        Asset Name    : TestManifest_asset_2
        Asset ID      : nb:cid:UUID:0dbfcaf9-e53c-4399-99c2-ba207b1821d9
        Asset Options : None
        Asset State   : Initialized
        Asset Files....
                interview2.wmv
                File State : Pending

                interview1.wmv
                File State : Pending


        Asset Name    : TestManifest_asset_1
        Asset ID      : nb:cid:UUID:7a7188b5-d39d-42de-b3c7-f418174b14f3
        Asset Options : None
        Asset State   : Initialized
        Asset Files....
                BigBuckBunny.mp4
                File State : Pending



===============================================
===[ BULK INGEST MANIFEST MONITOR FILE COPY]===
===============================================


Waiting on all file uploads.
PendingFilesCount  : 3
FinishedFilesCount : 0
0% complete.

Upload for c:\Projects\Media Services\BulkIngestTest\supportFiles\multifile\inte
rview2.wmv completed.
Upload for c:\Projects\Media Services\BulkIngestTest\supportFiles\multifile\BigB
uckBunny.mp4 completed.
Upload for c:\Projects\Media Services\BulkIngestTest\supportFiles\multifile\inte
rview1.wmv completed.

Waiting on all file uploads.
PendingFilesCount  : 0
FinishedFilesCount : 3
100% complete.

Completed


===============================================
===========[ BULK INGEST MANIFESTS ]===========
===============================================

Manifest Name  : TestManifest
Manifest State : Inactive
Manifest Id    : nb:mid:UUID:47e2efdf-8ec8-6143-a4ac-bf43efba35c8
Manifest Last Modified      : 2/25/2013 1:50:48 PM
Manifest PendingFilesCount  : 0
Manifest FinishedFilesCount : 3
Manifest BLOB URI : https://mediasvcm13w6rsvm521t.blob.core.windows.net/manifest
-402dcea0-411c-48f2-90fc-805c63a92a72

        Asset Name    : TestManifest_asset_2
        Asset ID      : nb:cid:UUID:0dbfcaf9-e53c-4399-99c2-ba207b1821d9
        Asset Options : None
        Asset State   : Initialized
        Asset Files....
                interview2.wmv
                File State : Finished

                interview1.wmv
                File State : Finished


        Asset Name    : TestManifest_asset_1
        Asset ID      : nb:cid:UUID:7a7188b5-d39d-42de-b3c7-f418174b14f3
        Asset Options : None
        Asset State   : Initialized
        Asset Files....
                BigBuckBunny.mp4
                File State : Finished



===============================================
===========[ BULK INGEST MANIFESTS ]===========
===============================================

Manifest Name  : TestManifest
Manifest State : Inactive
Manifest Id    : nb:mid:UUID:c44efbcc-8f6a-f94a-aa21-2d0c1166ecb7
Manifest Last Modified      : 2/25/2013 1:47:47 PM
Manifest PendingFilesCount  : 0
Manifest FinishedFilesCount : 0
Manifest BLOB URI : https://mediasvcm13w6rsvm521t.blob.core.windows.net/manifest
-f001a80c-3c37-4a31-8ffc-b4bfe98b56be

        Asset Name    : TestManifest_asset_1
        Asset ID      : nb:cid:UUID:350ceed6-086a-413d-9bb9-a8a2f07a60f5
        Asset Options : None
        Asset State   : Initialized
        Asset Files....

Manifest Name  : TestManifest
Manifest State : Inactive
Manifest Id    : nb:mid:UUID:47e2efdf-8ec8-6143-a4ac-bf43efba35c8
Manifest Last Modified      : 2/25/2013 1:50:48 PM
Manifest PendingFilesCount  : 0
Manifest FinishedFilesCount : 3
Manifest BLOB URI : https://mediasvcm13w6rsvm521t.blob.core.windows.net/manifest
-402dcea0-411c-48f2-90fc-805c63a92a72

        Asset Name    : TestManifest_asset_2
        Asset ID      : nb:cid:UUID:0dbfcaf9-e53c-4399-99c2-ba207b1821d9
        Asset Options : None
        Asset State   : Initialized
        Asset Files....
                interview2.wmv
                File State : Finished

                interview1.wmv
                File State : Finished


        Asset Name    : TestManifest_asset_1
        Asset ID      : nb:cid:UUID:7a7188b5-d39d-42de-b3c7-f418174b14f3
        Asset Options : None
        Asset State   : Initialized
        Asset Files....
                BigBuckBunny.mp4
                File State : Finished



===============================================
=======[ DELETE BULK INGEST MANIFESTS ]========
===============================================


===============================================
=====[ DELETE BULK INGEST MANIFEST ASSETS ]====
===============================================

Deleting assets for manifest named : TestManifest...

Deleting asset nb:cid:UUID:350ceed6-086a-413d-9bb9-a8a2f07a60f5

Deleting Manifest...
        Name : TestManifest
        Manifest ID : nb:mid:UUID:c44efbcc-8f6a-f94a-aa21-2d0c1166ecb7...
Delete Complete.


===============================================
=====[ DELETE BULK INGEST MANIFEST ASSETS ]====
===============================================

Deleting assets for manifest named : TestManifest...

Deleting asset nb:cid:UUID:0dbfcaf9-e53c-4399-99c2-ba207b1821d9

Deleting asset nb:cid:UUID:7a7188b5-d39d-42de-b3c7-f418174b14f3

Deleting Manifest...
        Name : TestManifest
        Manifest ID : nb:mid:UUID:47e2efdf-8ec8-6143-a4ac-bf43efba35c8...
Delete Complete.

이제 다음 항목을 진행할 준비가 되었습니다. 정적 패키징.

참고 항목

표시:
© 2015 Microsoft