Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Unity到HoloLens的程序问题-无法从';字符串';至';System.IO.Stream';_C#_Unity3d_Stream_Streamreader_Hololens - Fatal编程技术网

C# 从Unity到HoloLens的程序问题-无法从';字符串';至';System.IO.Stream';

C# 从Unity到HoloLens的程序问题-无法从';字符串';至';System.IO.Stream';,c#,unity3d,stream,streamreader,hololens,C#,Unity3d,Stream,Streamreader,Hololens,我有一个用C#编写的Unity程序,它初始化了一个新的StreamReader,并从存储在Unity的resources文件夹中的文本文件中读取文本数据。当我点击play in Unity时,一切都很好——一切都正常,文本被完美地阅读和显示。但是,当我尝试构建它以便通过HoloLens emulator(平台:Windows应用商店,SDK:Universal 10,构建和运行:本地计算机)运行它时,我得到错误:错误CS1503:参数1:无法从“字符串”转换为“System.IO.Stream”

我有一个用C#编写的Unity程序,它初始化了一个新的StreamReader,并从存储在Unity的resources文件夹中的文本文件中读取文本数据。当我点击play in Unity时,一切都很好——一切都正常,文本被完美地阅读和显示。但是,当我尝试构建它以便通过HoloLens emulator(平台:Windows应用商店,SDK:Universal 10,构建和运行:本地计算机)运行它时,我得到错误:错误CS1503:参数1:无法从“字符串”转换为“System.IO.Stream”

我不明白为什么这个错误一开始就出现了,因为StreamReader的构造函数有一个接受字符串参数的重载

我的代码如下:

string metadata = String.Format("/Resources/.../metadata.txt", list);
if (File.Exists(Application.dataPath + metadata))
{
     using (StreamReader sr = new StreamReader(Application.dataPath + metadata))
            {
                  // ....
            }
}

UWP上Unity Mono和.NET的API在某些情况下有所不同。可能是UWP版本中缺少StremReader(字符串)ctor

例如,我有一个案例,Delegate.CreateInstance在编辑器中工作,但在Hololens上失败,需要不同的版本


您可以将内容封装在宏中,也可以使用UWP所需的API。

在某些情况下,UWP上的Unity Mono和.NET API有所不同。可能是UWP版本中缺少StremReader(字符串)ctor

例如,我有一个案例,Delegate.CreateInstance在编辑器中工作,但在Hololens上失败,需要不同的版本


您可以将内容封装在宏中,也可以使用UWP要求的宏。

我同意其他人的看法,这可能是由于编辑器中的mono与编译UWP应用程序时使用的.net之间存在差异造成的。请尝试以下方法:

using(StreamReader sr = new StreamReader(new FileStream(Application.dataPath + metadata, FileMode.Open)))

这应该是合法的mono和.net代码。

我同意其他人的看法,这可能是由于编辑器中的mono与用于编译UWP应用程序的.net之间存在差异所致。请尝试以下方法:

using(StreamReader sr = new StreamReader(new FileStream(Application.dataPath + metadata, FileMode.Open)))

这应该是合法的mono和.net代码。

我只能假设没有以文件名为参数的StreamReader重载,但只有一个StreamReader重载,正常的System.IO.StreamReader中存在字符串重载,这就是您正在使用的吗?我相信我在正常的System.IO.StreamReader应用程序中使用了字符串重载。dataPath返回字符串,元数据是字符串。“使用System.IO”是正确运行此操作所必需的。在Unity中单击play按钮时,一切都编译并运行良好;但是,当我尝试将其构建为Windows应用程序时,我遇到了问题中指出的编译错误。当您在Unity中构建时,您将获得一个新项目。然后双击解决方案,打开一个新的VisualStudio。在这里,您需要转到错误(之前没有显示的错误)。删除错误并重新开始键入相同的内容。它将启动自动完成和intellisense,这将告诉您是否可以使用StremReader(字符串)。我只能假设没有以文件名为参数的StreamReader重载,只有一个仅以流为参数的StreamReader重载。正常系统中存在字符串重载。IO.StreamReader,这就是您正在使用的吗?我相信我在正常的System.IO.StreamReader应用程序中使用了字符串重载。dataPath返回字符串,元数据是字符串。“使用System.IO”是正确运行此操作所必需的。在Unity中单击play按钮时,一切都编译并运行良好;但是,当我尝试将其构建为Windows应用程序时,我遇到了问题中指出的编译错误。当您在Unity中构建时,您将获得一个新项目。然后双击解决方案,打开一个新的VisualStudio。在这里,您需要转到错误(之前没有显示的错误)。删除错误并重新开始键入相同的内容。它将启动自动补全和智能感知,这将告诉您是否可以使用StremReader(字符串)。我在visual studio C#中编写代码,我不使用Monodevelop。Mono和Monodevelop是两种不同的东西。Mono是Unity中使用的框架,即使在使用VS时也是如此。MonoDevelop是由开发Mono框架的人员开发的IDE。Mono框架是.NET3.5加上一些添加,而VS中的UWP(一旦您从Unity构建并双击解决方案),这就是.NETUWP版本。最近,由于可用类的一些限制。我在visual studio C#中编写代码,我不使用Monodevelop。Mono和Monodevelop是两种不同的东西。Mono是Unity中使用的框架,即使在使用VS时也是如此。MonoDevelop是由开发Mono框架的人员开发的IDE。Mono框架是.NET3.5加上一些添加,而VS中的UWP(一旦您从Unity构建并双击解决方案),这就是.NETUWP版本。因此,最近可用的类中存在一些限制。制作文件流并使用它初始化StreamReader是可行的。我在VisualStudio中编写代码,我认为一切都应该是.NET。我仍然不能完全确定这个问题是什么,但非常感谢您提供了一个解决方案。我的程序现在可以构建并部署到holoLens模拟器了。制作文件流并使用它初始化StreamReader是可行的。我在VisualStudio中编写代码,我认为一切都应该是.NET。我仍然不能完全确定这个问题是什么,但非常感谢您提供了一个解决方案。我的程序现在能够构建并部署到holoLens模拟器。