Доступ к файлу изображения в проекте Metro JS из проекта компонента WinRT
Я работаю над метро-приложением JavaScript и обнаружил, что для вызова кода C# из JavaScript мне нужно использовать проект компонента среды выполнения Windows в своем решении. Теперь мне нужно проверить некоторые изображения, которые добавляются в приложение метро JavaScript в папке "images", и если они есть, мне нужно скопировать их в локальную папку приложения.
Сначала я попробовал использовать метод
Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///images/logo.png"))
но выдает исключение, которое не может найти путь к файлу / местоположению.
Я думал, что это может быть потому, что пространства имен проекта разные. Изображение добавлено в проект приложения JavaScript metro, и я пытаюсь использовать его из проекта компонента среды выполнения Windows.
Поэтому я попытался передать жестко закодированный путь к файлу изображения, например "E://projects/myProject/myProject/images/logo.png", и попытался с помощью метода
Windows.Storage.StorageFile.GetFileFromPathAsync(<passed the above path>);
но он выдает исключение, что путь к файлу неверный формат.
Могу ли я получить доступ к файлу, добавленному в проект приложения метрополитена JavaScript из проекта компонента среды выполнения Windows, в том же решении? И скопировать его в локальную папку приложения?
Благодарю.
1 ответ
Это должно работать, и я попробовал вашу первую строку кода в новом проекте JS с новым компонентом WinRT в C#. Работало просто отлично. Можете ли вы показать больше всего класса C# в вашем компоненте, а также код JS, который его вызывает?
Вот код.cs для моего теста:
using System;
using Windows.Storage;
namespace Test2
{
public sealed class Class1
{
public async void TestAccess()
{
StorageFile file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///images/logo.png"));
}
}
}
И код JS для его вызова:
var obj = new Test2.Class1();
obj.testAccess();
И вы также подтвердили, что файл logo.png находится в вашем проекте JS?