2012-12-13 3 views
1

Я создаю файл библиотеки классов. В этом встроенном скриптовом файле хранимой процедуры. поэтому мне нужно взять данные sp как строку, и мне нужно создать в C#. поэтому для этого метода GetManifestResourceStream требуется полное имя файла сборки и скрипта. так я и сделал . Но я не понял, почему мой объект потока получает нулевое значение.Как получить имя пространства имен проекта, используя Assembly.GetExecutingAssembly(). GetName(). Имя

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(); 
    } 
} 
+3

В чем вопрос? – rae1

+0

Пожалуйста, подумайте над тем, чтобы добавить вопрос в тело сообщения и описать, какова ваша фактическая цель (получение ресурса по имени не похоже на хорошую конечную цель). –

ответ

2

Как ни странно получить постоянное значение строки, получив имя сборки ... Но вам не хватает "." в том, как построить имя:

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

Это, вероятно, будет безопасным и легче просто жёстко имя:

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

Примечание «Как вставлять и получить доступ к ресурсам» доступен на Micorsoft support site и чехлов Эта тема.

Смежные вопросы