학습
학습 경로
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
앱 데이터는 특정 앱에서 생성되고 관리되는 변경 가능한 데이터입니다. 이 데이터에는 런타임 상태, 앱 설정, 사용자 기본 설정, 참조 콘텐츠(예: 사전 앱의 사전 정의) 및 기타 설정이 포함됩니다. 앱 데이터는 사용자가 앱을 사용할 때 만들고 관리하는 데이터인 사용자 데이터와 다릅니다. 사용자 데이터에는 문서 또는 미디어 파일, 이메일 또는 통신 기록 또는 사용자가 만든 콘텐츠를 보관하는 데이터베이스 레코드가 포함됩니다. 사용자 데이터는 두 개 이상의 앱에서 유용하거나 의미가 있을 수 있습니다. 문서와 같이 앱 자체와 독립적인 관계를 갖춘 엔티티로서 사용자가 조작 또는 전송하려는 데이터인 경우가 많습니다.
앱 데이터에 대한 중요 정보: 앱 데이터의 수명은 앱의 수명에 달려있습니다. 앱이 제거되면, 모든 앱 데이터도 그에 따라 사라집니다. 사용자 데이터 또는 사용자가 중요하고 대체할 수 없는 것으로 인식할 수 있는 것 일체를 저장하는데 앱 데이터를 사용하지 마세요. 사용자의 라이브러리 및 Microsoft OneDrive를 사용하여 이러한 종류의 정보를 저장하는 것이 좋습니다. 앱 데이터는 앱별 사용자 기본 설정, 설정 및 즐겨찾기를 저장하는 데 적합합니다.
앱 데이터의 유형은 설정과 파일, 두 가지로 나뉩니다.
설정을 사용하여 사용자 기본 설정 및 애플리케이션 상태 정보를 저장합니다. 앱 데이터 API를 사용하면 설정 만들기와 검색이 용이해집니다(이 문서의 뒷부분에서 몇 가지 예제를 보여 드리겠습니다).
앱 설정을 위해 사용할 수 있는 데이터 형식은 다음과 같습니다.
파일을 사용하여 이진 데이터를 저장하거나 사용자 지정된 직렬화된 형식을 활성화합니다.
앱이 설치되면 시스템은 설정 및 파일에 대한 자체 사용자별 데이터 저장소를 제공합니다. 시스템이 물리적 스토리지를 관리하여 데이터가 다른 앱 및 다른 사용자로부터 격리되도록 하기 때문에, 이 데이터가 어디에 있으며 또는 어떻게 있는지 알 필요가 없습니다. 또한 이 시스템은 사용자가 앱에 업데이트를 설치하면 데이터 저장소의 콘텐츠를 유지하고, 앱이 제거되면 이러한 데이터 저장소의 콘텐츠를 완전하게 제거합니다.
앱 데이터 저장소 내에서, 각 앱에는 시스템 정의 루트 디렉토리가 있습니다. 하나는 로컬 파일용, 다른 하나는 로밍 파일용, 다른 하나는 임시 파일용입니다. 앱은 이러한 각 루트 디렉토리에 새 파일 및 새 컨테이너를 추가할 수 있습니다.
앱 세션 간에 유지되어야 하며 로밍 앱 데이터에 적합하지 않은 모든 정보에 로컬 앱 데이터가 사용돼야 합니다. 다른 디바이스에 적용되지 않는 데이터도 여기에 저장해야 합니다. 저장된 로컬 데이터에 대한 일반적인 크기 제한은 없습니다. 로밍하는 데 의미가 없는 데이터 및 큰 데이터 세트를 저장하는데 로컬 앱 데이터 저장소를 사용합니다.
로컬 앱 데이터를 읽거나 쓰려면 먼저 로컬 앱 데이터 저장소를 검색해야 합니다. 로컬 앱 데이터 저장소를 검색하려면, ApplicationData.LocalSettings속 속성을 사용하여 앱의 로컬 설정을 ApplicationDataContainer 객체로 가져옵니다. 이 ApplicationData.LocalFolder 속성을 사용하여 StorageFolder 객체에 있는 파일을 가져옵니다. 이 ApplicationData.LocalCacheFolder 속성을 사용하여 백업 및 복원에 포함되지 않은 파일을 저장할 수 있는 로컬 앱 데이터 저장소의 폴더를 가져옵니다.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
설정을 만들거나 쓰려면, ApplicationDataContainer.Values 속성을 사용하여 localSettings
이전 단계에서 가져온 컨테이너에 있는 설정에 액세스합니다. 다음 예제에서는 exampleSetting
이라는 설정을 만듭니다.
// Simple setting
localSettings.Values["exampleSetting"] = "Hello Windows";
설정을 검색하려면 설정을 만드는 데 사용한 것과 동일한 ApplicationDataContainer.Values 속성을 사용합니다. 이 예제에서는 방금 만든 설정을 검색하는 방법을 보여줍니다.
// Simple setting
Object value = localSettings.Values["exampleSetting"];
복합 값을 만들거나 쓰려면, ApplicationDataCompositeValue 객체를 만듭니다. 이 예제에서는 exampleCompositeSetting
명명된 복합 설정을 만들어 localSettings
컨테이너에 추가합니다.
// Composite setting
Windows.Storage.ApplicationDataCompositeValue composite =
new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";
localSettings.Values["exampleCompositeSetting"] = composite;
이 예제에서는 방금 만든 복합 값을 검색하는 방법을 보여줍니다.
// Composite setting
Windows.Storage.ApplicationDataCompositeValue composite =
(Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["exampleCompositeSetting"];
if (composite == null)
{
// No data
}
else
{
// Access data in composite["intVal"] and composite["strVal"]
}
로컬 앱 데이터 스토어에서 파일을 만들고 업데이트하려면 Windows.Storage.StorageFolder.CreateFileAsync 및 Windows.Storage.FileIO.WriteTextAsync같은 파일 API를 사용합니다. 이 예제에서는 dataFile.txt
라고 명명된 파일을 localFolder
컨테이너에 만들고 현재 날짜와 시간을 파일에 씁니다. 이 ReplaceExisting 값이 있는 CreationCollisionOption 열거형에서는 파일이 이미 있는 경우 해당 파일을 바꾸도록 나타냅니다.
async void WriteTimestamp()
{
Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter =
new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
StorageFile sampleFile = await localFolder.CreateFileAsync("dataFile.txt",
CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTimeOffset.Now));
}
로컬 앱 데이터 스토어에 있는 파일을 열고 읽으려면 Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync, 및 Windows.Storage.FileIO.ReadTextAsync같은 파일 API를 사용합니다. 이 예제에서는 이전 단계에서 만든 dataFile.txt
파일을 열고 파일에서 날짜를 읽습니다. 다양한 위치에서 파일 리소스를 로드하는 방법에 대한 자세한 내용은 파일 리소스를 로드하는 방법을 참조하세요.
async void ReadTimestamp()
{
try
{
StorageFile sampleFile = await localFolder.GetFileAsync("dataFile.txt");
String timestamp = await FileIO.ReadTextAsync(sampleFile);
// Data is contained in timestamp
}
catch (Exception)
{
// Timestamp not found
}
}
경고
로밍 데이터 및 설정은 더 이상 Windows 11에서 지원되지 않습니다. 대체 방법으로는 Azure App Service를 권장합니다. Azure App Service는 광범위하게 지원되고 잘 문서화되어 있고 신뢰할 수 있으며 iOS, Android, 웹 등의 플랫폼 간/에코시스템 간 시나리오를 지원합니다.
다음 설명서는 Windows 10 버전 1909 및 그 이하 버전에 적용됩니다.
앱에서 로밍 데이터를 사용하는 경우, 사용자가 여러 디바이스에서 앱의 앱 데이터를 쉽게 동기화 상태로 유지할 수 있습니다. 사용자가 여러 디바이스에 앱을 설치하는 경우, OS는 앱 데이터를 동기화 상태로 유지하여 사용자가 두 번째 디바이스에서 앱에 대해 수행해야 하는 설정 작업의 양을 줄여줍니다. 로밍을 사용하면 사용자가 예를 들어 목록 작성과 같이, 다른 장치에서 중단한 작업을 바로 여기에서 계속할 수 있습니다. OS는 업데이트될 때 로밍 데이터를 클라우드로 복제하고, 앱을 설치한 다른 디바이스와 데이터를 동기화합니다.
OS는 각 앱이 로밍할 수 있는 앱 데이터의 크기를 제한합니다. 참조할 섹션은 ApplicationData.RoamingStorageQuota입니다. 앱이 한계에 도달하면, 앱의 총 로밍된 앱 데이터가 한계보다 작아질 때까지 앱의 앱 데이터가 클라우드에 복제되지 않습니다. 이러한 이유로 사용자 기본 설정, 링크 및 작은 데이터 파일에 대해서만 로밍 데이터를 사용하는 것이 좋습니다.
필요한 시간 간격 내에서 사용자가 일부 디바이스에서 액세스를 하는 한, 앱에 대한 로밍 데이터를 클라우드에서 사용할 수 있습니다. 사용자가 이 시간 간격보다 오랫동안 앱을 실행하지 않으면 로밍 데이터가 클라우드에서 제거됩니다. 사용자가 앱을 제거하면 로밍 데이터가 클라우드에서 자동으로 제거되지 않고 유지됩니다. 사용자가 시간 간격 내에 앱을 다시 설치하면 로밍 데이터가 클라우드에서 동기화됩니다.
로밍 데이터에 대한 중요 정보를 참조하세요.
로밍 데이터에 대한 중요 정보를 참조하세요.
Microsoft 계정을 사용하여 디바이스에 로그온하는 경우 사용자 누구나 로밍 앱 데이터를 활용할 수 있습니다. 그러나 사용자 및 그룹 정책 관리자는 언제든지 디바이스에서 로밍 앱 데이터를 끌 수 있습니다. 사용자가 Microsoft 계정을 사용하지 않도록 선택하거나 데이터 로밍 기능을 사용하지 않도록 설정하면 앱은 계속 사용할 수 있지만 앱 데이터는 각 디바이스에 대해 로컬이 됩니다.
PasswordVault에 저장된 데이터는 사용자가 디바이스를 "신뢰할 수 있는 디바이스”로 지정한 경우에만 전환됩니다. 신뢰할 수 없는 디바이스의 경우, 이 자격 증명 모음에서 보호된 데이터가 로밍되지 않습니다.
로밍 데이터에 대한 중요 정보를 참조하세요.
앱 데이터 로밍은 둘 이상의 디바이스에서 한 번에 동시 사용하기 위한 것이 아닙니다. 두 디바이스에서 특정 데이터 단위가 변경되어 동기화 중에 충돌이 발생하는 경우 시스템은 항상 마지막으로 작성된 값을 선호합니다. 이렇게 하면 앱이 가장 최신 정보를 활용할 수 있습니다. 데이터 단위가 설정 복합인 경우 설정 단위 수준에서 충돌 해결이 계속 발생합니다. 즉, 최신 변경 내용이 있는 복합 항목이 동기화됩니다.
로밍 데이터에 대한 중요 정보를 참조하세요.
설정의 예상 수명에 따라 데이터는 서로 다른 시간에 작성되어야 합니다. 변경 빈도가 낮고 속도가 느린 앱 데이터는 즉시 작성해야 합니다. 그러나 자주 변경되는 앱 데이터는 앱이 일시 중단된 경우는 물론 정기적으로(예: 5분마다 한 번) 작성돼야 합니다. 예를 들어 음악 앱에서는 새로운 곡이 재생되기 시작할 때마다 "현재 곡" 설정을 기록할 수 있지만 곡의 실제 위치는 일시 중단 시에만 기록해야 합니다.
로밍 데이터에 대한 중요 정보를 참조하세요.
시스템에는 리소스의 부적절한 사용을 방지하기 위한 다양한 보호 메커니즘이 있습니다. 앱 데이터가 예상대로 전환되지 않으면 디바이스가 일시적으로 제한되었을 수 있습니다. 일정 시간 동안 기다리면 일반적으로 이 상황이 자동으로 해결되며 어떤 작업도 필요하지 않습니다.
로밍 데이터에 대한 중요 정보를 참조하세요.
앱 데이터는 버전 관리를 활용하여 한 데이터 구조에서 다른 데이터 구조로 업그레이드할 수 있습니다. 버전 번호는 앱 버전과 다르며, 필요에 따라 설정할 수 있습니다. 적용되지는 않지만, 최신 데이터를 나타내는 더 낮은 번호의 데이터 버전으로 전환하려고 하면 바람직하지 않은 복잡성(데이터 손실 포함) 문제가 발생할 수 있으므로 번호가 증가하는 버전을 사용하는 것이 좋습니다.
동일한 버전 번호를 가진 설치된 앱 간에서만 앱 데이터가 로밍됩니다. 예를 들어 버전 2의 디바이스는 서로 데이터를 전환하며 버전 3의 디바이스에서도 동일한 작업을 수행하지만, 버전 2를 실행하는 디바이스와 버전 3을 실행하는 디바이스 간에는 로밍이 발생하지 않습니다. 다른 디바이스에서 다양한 버전 번호를 활용하는 새 앱을 설치하는 경우 새로 설치된 앱은 가장 높은 버전 번호와 연결된 앱 데이터를 동기화합니다.
로밍 데이터에 대한 중요 정보를 참조하세요.
개발자는 로밍 앱 데이터의 동기화를 트리거하기 위해 디바이스를 잠글 수 있습니다. 앱 데이터가 특정 시간 프레임 내에서 전환되지 않는 것 같으면 다음 항목을 검사하고 다음 내용이 지켜지는지 확인하세요.
로밍 데이터에 대한 중요 정보를 참조하세요.
로밍 앱 데이터를 사용하려면, 로밍 데이터 변경 내용을 등록하고 로밍 데이터 컨테이너를 검색하여 설정을 읽고 쓸 수 있어야 합니다.
로밍 데이터가 변경될 때 알림을 받도록 등록합니다.
로밍 데이터 변경 시 DataChanged 이벤트가 알림 표시합니다. 이 예제에서는 DataChangeHandler
를 로밍 데이터 변경에 대한 처리기로 설정합니다.
void InitHandlers()
{
Windows.Storage.ApplicationData.Current.DataChanged +=
new TypedEventHandler<ApplicationData, object>(DataChangeHandler);
}
void DataChangeHandler(Windows.Storage.ApplicationData appData, object o)
{
// TODO: Refresh your data
}
앱의 설정 및 파일에 대한 컨테이너를 가져옵니다.
파일을 가져오려면 ApplicationData.RoamingSettings 속성을 사용하여 설정과 ApplicationData.RoamingFolder 속성을 가져옵니다.
Windows.Storage.ApplicationDataContainer roamingSettings =
Windows.Storage.ApplicationData.Current.RoamingSettings;
Windows.Storage.StorageFolder roamingFolder =
Windows.Storage.ApplicationData.Current.RoamingFolder;
로밍 데이터에 대한 중요 정보를 참조하세요.
이전 섹션에서 가져온 컨테이너의 설정에 액세스하려면 ApplicationDataContainer.Values 속성을 roamingSettings
사용합니다. 이 예제에서는 exampleSetting
라고 명명된 간단한 설정과 composite
라고 명명된 복합 값을 만듭니다.
// Simple setting
roamingSettings.Values["exampleSetting"] = "Hello World";
// High Priority setting, for example, last page position in book reader app
roamingSettings.values["HighPriority"] = "65";
// Composite setting
Windows.Storage.ApplicationDataCompositeValue composite =
new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";
roamingSettings.Values["exampleCompositeSetting"] = composite;
이 예제에서는 방금 만든 설정을 검색합니다.
// Simple setting
Object value = roamingSettings.Values["exampleSetting"];
// Composite setting
Windows.Storage.ApplicationDataCompositeValue composite =
(Windows.Storage.ApplicationDataCompositeValue)roamingSettings.Values["exampleCompositeSetting"];
if (composite == null)
{
// No data
}
else
{
// Access data in composite["intVal"] and composite["strVal"]
}
로밍 데이터에 대한 중요 정보를 참조하세요.
로밍 앱 데이터 스토어에서 파일을 만들고 업데이트하려면 Windows.Storage.StorageFolder.CreateFileAsync 및 Windows.Storage.FileIO.WriteTextAsync같은 파일 API를 사용합니다. 이 예제에서는 dataFile.txt
라고 명명된 파일을 roamingFolder
컨테이너에 만들고 현재 날짜와 시간을 파일에 씁니다. 이 ReplaceExisting 값이 있는 CreationCollisionOption 열거형에서는 파일이 이미 있는 경우 해당 파일을 바꾸도록 나타냅니다.
async void WriteTimestamp()
{
Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter =
new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
StorageFile sampleFile = await roamingFolder.CreateFileAsync("dataFile.txt",
CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTimeOffset.Now));
}
로밍 앱 데이터 스토어에서 파일을 열고 읽으려면 Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync, 및 Windows.Storage.FileIO.ReadTextAsync과 같은 파일 API를 사용합니다. 이 예제에서는 이전 섹션에서 만든 dataFile.txt
파일을 열고 파일에서 날짜를 읽습니다. 다양한 위치에서 파일 리소스를 로드하는 방법에 대한 자세한 내용은 파일 리소스를 로드하는 방법을 참조하세요.
async void ReadTimestamp()
{
try
{
StorageFile sampleFile = await roamingFolder.GetFileAsync("dataFile.txt");
String timestamp = await FileIO.ReadTextAsync(sampleFile);
// Data is contained in timestamp
}
catch (Exception)
{
// Timestamp not found
}
}
임시 앱 데이터 저장소는 캐시처럼 작동합니다. 해당 파일은 로밍되지 않으며 언제든지 제거할 수 있습니다. 시스템 유지 관리 작업은 언제든지 이 위치에 저장된 데이터를 자동으로 삭제할 수 있습니다. 사용자는 디스크 정리를 사용하여 임시 데이터 저장소에서 파일을 지울 수도 있습니다. 임시 앱 데이터는 앱 세션 중에 임시 정보를 저장하는 데 사용할 수 있습니다. 필요 시 사용된 공간을 시스템이 회수할 수 있으므로, 이 데이터가 앱 세션이 끝날 때까지 유지된다는 보장은 없습니다. 위치는 temporaryFolder 속성을 통해 사용 가능합니다.
파일을 가져오려면 ApplicationData.TemporaryFolder 속성을 사용합니다. 다음 단계에서는 이 단계로부터 가져온 temporaryFolder
변수를 사용합니다.
Windows.Storage.StorageFolder temporaryFolder = ApplicationData.Current.TemporaryFolder;
임시 앱 데이터 스토어에서 파일을 만들고 업데이트하려면 Windows.Storage.StorageFolder.CreateFileAsync 및 Windows.Storage.FileIO.WriteTextAsync와 같은 파일 API를 사용합니다. 이 예제에서는 dataFile.txt
라고 명명된 파일을 temporaryFolder
컨테이너에 만들고 현재 날짜와 시간을 파일에 씁니다. 이 ReplaceExisting 값이 있는 CreationCollisionOption 열거형에서는 파일이 이미 있는 경우 해당 파일을 바꾸도록 나타냅니다.
async void WriteTimestamp()
{
Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter =
new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
StorageFile sampleFile = await temporaryFolder.CreateFileAsync("dataFile.txt",
CreateCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTimeOffset.Now));
}
임시 앱 데이터 스토어에서 파일을 열고 읽으려면 Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync, 및 Windows.Storage.FileIO.ReadTextAsync와 같은 파일 API를 사용합니다. 이 예제에서는 이전 단계에서 만든 dataFile.txt
파일을 열고 파일에서 날짜를 읽습니다. 다양한 위치에서 파일 리소스를 로드하는 방법에 대한 자세한 내용은 파일 리소스를 로드하는 방법을 참조하세요.
async void ReadTimestamp()
{
try
{
StorageFile sampleFile = await temporaryFolder.GetFileAsync("dataFile.txt");
String timestamp = await FileIO.ReadTextAsync(sampleFile);
// Data is contained in timestamp
}
catch (Exception)
{
// Timestamp not found
}
}
앱 데이터 설정 및 파일을 손쉽게 구성하려면, 디렉터리로 직접 작업하는 대신 컨테이너( ApplicationDataContainer 객체로 표시)를 만듭니다. 로컬, 로밍 및 임시 앱 데이터 저장소에 컨테이너를 추가할 수 있습니다. 컨테이너는 최대 32개 수준까지 중첩 가능합니다.
설정 컨테이너를 만들려면, ApplicationDataContainer.CreateContainer 메서드를 호출합니다. 이 예제에서는 exampleContainer
라고 명명된 로컬 설정 컨테이너를 만들고 exampleSetting
라고 명명된 설정을 추가합니다. 이 Always 값은 ApplicationDataCreateDisposition 열거형에 있습니다. 해당 값으로 컨테이너가 아직 없는 경우, 컨테이너가 생성되었음을 나타냅니다.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
// Setting in a container
Windows.Storage.ApplicationDataContainer container =
localSettings.CreateContainer("exampleContainer", Windows.Storage.ApplicationDataCreateDisposition.Always);
if (localSettings.Containers.ContainsKey("exampleContainer"))
{
localSettings.Containers["exampleContainer"].Values["exampleSetting"] = "Hello Windows";
}
앱에 더 이상 필요하지 않은 간단한 설정을 삭제하려면 ApplicationDataContainerSettings.Remove 메서드를 사용합니다. 다음은 앞에서 만든 exampleSetting
로컬 설정을 삭제하는 예제입니다.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
// Delete simple setting
localSettings.Values.Remove("exampleSetting");
복합 설정을 삭제하려면, ApplicationDataCompositeValue.Remove 메서드를 사용합니다. 다음은 이전 예제에서 만든 exampleCompositeSetting
로컬 복합 설정을 삭제하는 예제입니다.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
// Delete composite setting
localSettings.Values.Remove("exampleCompositeSetting");
컨테이너를 삭제하려면, ApplicationDataContainer.DeleteContainer 메서드를 호출합니다. 다음은 앞에서 만든 exampleContainer
로컬 설정 컨테이너를 삭제하는 예제입니다.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
// Delete container
localSettings.DeleteContainer("exampleContainer");
필요에 따라 앱에 대한 앱 데이터의 버전을 지정할 수 있습니다. 이렇게 하면 이전 버전의 앱과 호환성 문제를 일으키지 않으면서 앱 데이터의 형식을 변경하는 이후 버전의 앱을 만들 수 있습니다. 앱은 데이터 저장소에서 앱 데이터의 버전을 검사하고, 버전이 앱의 예상보다 작을 경우 앱 데이터를 앱에서 새 형식으로 업데이트하고 버전을 업데이트해야 합니다. 자세한 내용은Application.Version 속성 및 ApplicationData.SetVersionAsync 메서드 섹션을 참조하세요.
Windows developer 피드백
Windows developer은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.
학습
학습 경로
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization