1

我正在创建类库文件。在此我嵌入了存储过程脚本文件。所以我需要将 sp 数据作为字符串,我必须在 c# 中创建。所以对于这个 GetManifestResourceStream 方法需要汇编和脚本文件的全名。所以我做了 。但我不明白为什么我的流对象得到空值。

string strNameSpace = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;

using (Stream stream = Assembly.GetExecutingAssembly()
   .GetManifestResourceStream(strNameSpace + "GP_SOP_AdjustTax.sql")) 
{
  // Here stream  is null.

  using (StreamReader reader = new StreamReader(stream))
  {
    string result = reader.ReadToEnd();
  }
}
4

1 回答 1

2

通过获取程序集名称来获取常量字符串值有点奇怪......但是你缺少“。” 在构造名称的方式上:

 Assembly.GetExecutingAssembly()
   .GetManifestResourceStream(strNameSpace + ".GP_SOP_AdjustTax.sql"))

简单地对名称进行硬编码可能会更安全、更容易:

 Assembly.GetExecutingAssembly()
   .GetManifestResourceStream("WhateverYoourNamespaceIs.GP_SOP_AdjustTax.sql"))

注意“如何嵌入和访问资源”可在Micorsoft 支持站点上找到并涵盖此主题。

于 2012-12-13T05:30:38.500 回答