2012-10-24 68 views
1

我正在運行一個引用類庫的MVC項目。該類庫包含一個javascript文件,其構建操作設置爲「嵌入式資源」。JavaScript作爲.NET類庫中的嵌入式資源?

該文件實際上發生了什麼?我似乎無法使用ResourceManager它得到,因爲我沒有把它的資源在命名空間的想法

我的類庫文件結構:

  • /項目
  • /項目/網絡
  • /項目/網絡/ JS
  • /Project/Web/Js/Test.js < <嵌入式資源

代碼:

var t = this.GetType().Assembly; 
var r = new System.Resources.ResourceManager("Namespace", t); //What is the namespace here? 
var js = r.GetObject("Test.js"); 
+0

程序集的根名稱空間。 –

+0

不起作用。我收到以下異常:「無法找到適用於指定文化或中性文化的資源,確保」YourNamespace.resources「在編譯時正確嵌入或鏈接到程序集」YourNamespace.Project「中,或者全部所需的衛星組件都可以加載並完全簽名。「 – Ropstah

回答

1

對不起,我沒有獲得一個編譯器現在所以下面可能含有微小的錯誤。

var asm = typeof(MyClass).Assembly; 
var stream = asm. GetManifestResourceStream("<rootnamespace>.Project.Web.Js.Test.js"); 
var reader = new StreamReader(stream); 
String source = reader.ReadToEnd(); 

注:

  • 使用typeof(x)代替GetType()。如果您從類型繼承,後者將導致錯誤的結果。
  • rootnamespace可以在項目設置中找到/設置。 (我假設「項目」是我的例子中的項目中的一個文件夾)
  • asp.net有一個預構建解決方案,以這種方式使用資源。試試看這Page.ClientScript。 (我不確定這是否也適用於MVC,但會打賭它會)