Upgrade your apps to Windows 8.1 – Tips and tricks
Vậy là Windows 8.1 ra mắt cũng đã lâu. Đối với các ứng dụng viết mới thì target mặc định của nó đã là Windows 8.1. Vậy đối với các ứng dụng cũ kỹ thì sao?
Microsoft cung cấp cho bạn một giải pháp, tuy chưa hoàn hảo, nhưng rất hữu ích. Bạn chỉ cần bấm và click.
Retarget
Để retarget ứng dụng từ windows 8 lên 8.1, rất đơn giản, chọn chuột phải vào Project, nhấn Retarget to Windows 8.1
Một bảng nhỏ hiện ra, nói rằng bạn nên backup blah blah blah. Nếu bạn đang dùng version control như TFS, cách backup tốt nhất là check in trước khi retarget
Nhấn OK để Visual Studio tiến hành Retarget
Khi bạn thấy cái bảng này là thành công….một nửa
Fix errors and Warning
Như hình trên bạn cũng thấy, có nhiều Errors và Warning xuất hiện. Yên tâm, khi build thử project, bạn sẽ thấy còn nhiều errors hơn nữa
Các errors về References
Như hình trên, ứng dụng cũ dùng Microsoft Advertising SDK for Windows 8 (XAML) version 6.1. Bạn đã Upgrade lên 8.1, thì phải dùng SDK phiên bản mới hơn.
Right click Reference trong Project Folder, chọn Add Reference…
Bỏ chọn các dòng bị mờ, và chọn dòng sáng rõ tương ứng. Như hình dưới đây. Xong rồi thì nhấn OK
Reinstall Nuget Package
Có một số Nuget Package chưa chịu target sang Windows 8.1. Mình sẽ target nó lại bằng cách…Reinstall
Mở Tool > Nuget Package Manager > Package Manager Console
Có tùy chọn cho phép bạn Reinstall tất cả mọi nuget package, nhưng mà làm vậy thì hơi lâu. Bạn chỉ nên update một số package bị ảnh hưởng thôi. Tên Package bị ảnh hưởng nằm trong dòng thông báo lỗi
Gõ dòng lệnh sau vào. Đoạn cuối cùng là tên package
Package Manager Console sẽ chạy, nhìn rất chuyên nghiệp :3
Chú ý: khi reinstall Google Analytics SDK, bạn sẽ thấy file bị conflict. Gõ N vô để nó bỏ qua không overwrite cái file này.
Tiếp tục làm tương tự cho các package khác. Lần này, bạn chỉ cần gõ phím mũi tên để paste lại lệnh gần nhất. Edit cái tên package là xong
Fix warning về Resource
Bạn nào làm app Multiple language sẽ gặp warning này. Lý do là method GetValue đã bị obsoleted, bạn cần phải nâng cấp một tí
Rất đơn giản. Thêm một dòng “ResourceContext.GetForCurrentView() làm tham số thứ 2 là xong
Đổi thành cái này
Fix lỗi querry for Windows Size directly
Ở windows 8.1, windows size đã có thể lấy trực tiếp ra ngoài. Vì vậy, dòng này trong Layout Aware Page bị lỗi thời.
Sửa bằng cách ta sẽ sửa method DetermineVisualState
Chuột phải DetermineVisualState > Go to Definition
Sửa lại như sau
protected virtual string DetermineVisualState()
{
string visualState = "FullScreenLandscape";
var windowWidth = Window.Current.Bounds.Width;
var windowHeight = Window.Current.Bounds.Height;
if (windowWidth <= 500)
{
visualState = "Snapped" + "_Detail";
}
else if (windowWidth <= 1366)
{
if (windowWidth < windowHeight)
{
visualState = "FullScreenPortrait" + "_Detail";
}
else
{
visualState = "FilledOrNarrow";
}
}
return visualState;
}
Sau đó, thay thế method này với method cũ. Lưu ý method này không có tham số
Vậy là xong. Build lại, bạn sẽ thấy không còn lỗi nào :yay: