我有一部分这样的代码
Assembly myAssembly = Assembly.GetExecutingAssembly();
string[] names = myAssembly.GetManifestResourceNames();
foreach (string file in names)
{
if (file.EndsWith(".dtd"))
{
// attach to stream to the resource in the manifest
dtdStream = myAssembly.GetManifestResourceStream(file);
MessageBox.Show(dtdStream.ToString());
}
}
我的Resources文件夹下有所有dtd文件。其构建类型为Embedded Resource。
现在,当我调试代码时,我得到一个显示System.IO.UnmanagedMemoryStream的消息框
但是我想要一个Managed MemoryStream吗?
我的代码有什么问题?
谢谢...
最佳答案
资源作为程序集(EXE或DLL)的一部分进行编译,这意味着当OS启动进程时,资源将被加载到非托管内存中。这就是为什么GetManifestResourceStream
返回的任何流都必须不受管理(类型为UnmanagedMemoryStream
)的原因。
到底有什么问题? MemoryStream
和UnmanagedMemoryStream
的界面基本相同,只是(隐藏的)功能有所不同,这对您没有任何影响。