Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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# 值不能为null。参数名称:读取嵌入文件的内容时发生流错误_C# - Fatal编程技术网

C# 值不能为null。参数名称:读取嵌入文件的内容时发生流错误

C# 值不能为null。参数名称:读取嵌入文件的内容时发生流错误,c#,C#,我正在用c#做一个应用程序 我得到一个错误: 值不能为null。参数名称:读取嵌入文件contentxs时的流 在代码中 Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + Name); 如何解决此错误?嵌入资源的前缀不是程序集名称,而是:在项目上指定的默认命名空间。不过,你最好的策略是: string[] names = Asm.GetManifestResourceNames(); foreach(v

我正在用c#做一个应用程序

我得到一个错误:

值不能为null。参数名称:读取嵌入文件contentxs时的流

在代码中

Stream strm = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + Name);

如何解决此错误?

嵌入资源的前缀不是程序集名称,而是:在项目上指定的默认命名空间。不过,你最好的策略是:

string[] names = Asm.GetManifestResourceNames();
foreach(var name in names) Debug.WriteLine(name);

然后查看名称的实际名称,并相应地调整前缀。如果不完全匹配,您将得到
null

我发现,在添加文本文件或模板文件以读取电子邮件正文,然后使用 以下语法:

Assembly asm = Assembly.GetExecutingAssembly();
string assemblyName = asm.GetName().Name;
string emailTemplateName = xyz.tt;
emailTemplateName = assemblyName + "." +  emailTemplateName;
using (StreamReader reader = new StreamReader(asm.GetManifestResourceStream(emailTemplateName)))
{
body = reader.ReadToEnd();
}

默认情况下,该文件将添加到属性为“Build Action”=Content的项目库中。我将价值从“内容”改为“嵌入式资源”,一切都很好。

解决了我的问题。谢谢。将Visual Studio中文件属性的构建操作更改为“嵌入式资源”为我解决了这个问题。谢谢