0

我正在开发一个 JavaScript Metro 应用程序,我发现要从 JavaScript 调用 C# 代码,我必须在我的解决方案中使用 Windows 运行时组件项目。现在我需要检查一些添加到“images”文件夹中的 JavaScript Metro 应用程序中的图像,如果它们在那里,我需要将它们复制到应用程序本地文件夹中。

首先我尝试使用该方法

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>); 

但它会抛出文件路径格式不正确的异常。

我可以从同一解决方案中的 Windows 运行时组件项目访问 JavaScript Metro 应用程序项目中添加的文件吗?并将其复制到应用程序本地文件夹中?

谢谢。

4

1 回答 1

0

这应该可行,我在一个新的 JS 项目中尝试了你的第一行代码,并在 C# 中使用了一个新的 WinRT 组件。它工作得很好。您能否在组件中显示更多整个 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 项目中?

于 2014-02-24T00:24:41.193 回答