2011-07-01 114 views
0

希望有些简单,但已经尝试过,并保持失败。 我正在尝试在C#应用程序中创建一个Stream对象,该对象将CSS文件复制到特定位置。 CSS文件嵌入到我的资源中。 我曾尝试过的流对象的状态始终为空。为什么资源流始终为空?

有人可以通过看下面的指向正确的方向吗?

谢谢:) burrows111

Assembly Assemb = Assembly.GetExecutingAssembly(); 
Stream stream = Assemb.GetManifestResourceStream(ThisNameSpace.Properties.Resources.ClockingsMapStyle); // NULL!!!! 
FileStream fs = new FileStream("to store in this location", FileMode.Create); 
StreamReader Reader = new StreamReader(stream); 
StreamWriter Writer = new StreamWriter(fs); 
Writer.Write(Reader.ReadToEnd()); 
+0

来自MSDN如果访问另一个程序集中的私有资源并且调用方没有ReflectionPermissionFlag.TypeInformation标志,则此方法返回空引用(在Visual Basic中为Nothing)。 –

回答

2

这个工作对我来说:

StreamReader reader; 
StreamWriter writer; 
Stream stream; 
Assembly assembly = Assembly.GetExecutingAssembly(); 

using (stream = assembly.GetManifestResourceStream("Namespace.Stylesheet1.css")) 
using (reader = new StreamReader(stream)) 
using (writer = new StreamWriter("test.css")) 
{ 
    string content = reader.ReadToEnd(); 
    writer.Write(content); 
    writer.Close(); 
}  

我试图在一个标准的Windows窗体应用程序。

编辑:该文件(Stylesheet1.css)作为一个普通的项目包含在项目中的“嵌入式资源”构建操作。