您在文件系統混亂拼裝結構,文件夾的佈局。這是完全不同的東西。彙編(dll或exe)格式在CLI規範中定義,並且具有PE文件格式,並在編譯源代碼期間創建。您項目中的腳本存儲在文件系統中,除非它們被標記爲項目中的特定操作,即它們將保持原樣。
另一方面,如果將它們標記爲項目屬性中的Embedded.Resource,它們將作爲受管資源存儲在項目組合中,並可以在運行時訪問。但是,在使用.NET時,使用腳本似乎是一種奇怪的方法。
可能的建議是創建靜態字符串或SqlCommand變量併爲其分配SQL查詢。在這種形式下他們不是存儲過程。
基於託管資源的解決方案代碼如下。爲了讓它工作,請添加到您的項目根文件MySqlScripts.sql中,並將其標記爲Embedded.Resource。在這個實現中,默認的項目根名稱空間是「SqlScriptAsAResource」,這反映在嵌入資源的名稱中。相應地更改文件,名稱空間和嵌入的資源名稱。
using System;
using System.IO;
using System.Reflection;
namespace SqlScriptAsAResource
{
class Program
{
static void Main(string[] args)
{
Assembly myAssembly = Assembly.GetExecutingAssembly();
Stream resStream = myAssembly.GetManifestResourceStream("SqlScriptAsAResource.MySqlScripts.sql");
using(StreamReader reader = new StreamReader(resStream))
{
String sqlScript = reader.ReadToEnd();
// Use your SQL script
}
}
}
}
基於靜態成員的解決方案是這一個:
using System;
using System.Data.SqlClient;
namespace SqlScriptAsAResource
{
internal static class SqlUtilities
{
public static readonly String SqlScriptValue = "SELECT * FROM Table1;";
public static readonly SqlCommand Commadn = new SqlCommand("SELECT * FROM Table1;");
}
}
你好。我沒有看到你的第一個選項和kmatyaszek之間的區別。對於第二個選項,我使用靜態字符串作爲簡短的SQL腳本。 –
嗨,所以你可以得到兩個編碼員獨立到達同一個解決方案的證據 - 就像在科學中一樣,你有兩個獨立的文章在同一個科學雜誌的同一個問題上對新的發現也一樣說:)個人知道很多這樣的出版物 –