2012-04-20 149 views
1

我正在使用WinForms瀏覽器控件來顯示一些HTML文件中的內容,這些內容是作爲資源嵌入的,它可以正常工作。引用來自嵌入式資源的嵌入式資源

我想現在在我的應用程序中嵌入一些腳本和樣式表,但無法弄清楚如何儘可能地從html頁面引用其他嵌入式文件。

我現在的解決方案是加載資源並在顯示它之前將它們添加到瀏覽器控件的文檔中,但是如果我想使用類似JQuery的東西,這可能有點麻煩。

回答

1

如果腳本和樣式表與HTML文件位於同一目錄樹中,則可以使用相對路徑(例如<script src="../scripts/myFoo.js" />)。或者我錯過了什麼?

+0

myFoo.js將被嵌入可執行文件就像HTML文件的資源,所以沒有這樣的東西作爲一個相對路徑。 – 2012-04-20 20:34:33

+0

我看到了 - 您希望它們作爲應用程序中的嵌入式資源。不知何故,我錯過了。在這種情況下,我認爲你現在的解決方案可能是合理的,即使它有點混亂。 – 2012-04-20 20:36:56

+0

我正在考慮接受這個答案,因爲它讓我意識到我努力想要聰明。我最終做的是壓縮所有html資源,並在首次運行時將其提取到用戶的AppData目錄中,而不用擔心將腳本或CSS注入到WebBrowser控件的文檔中。 – 2012-04-30 22:11:01

0

嵌入的文件,然後在渲染前提取每一個到臨時文件夾:

string ret = ResourceUtility.GetTempFileFromEmbeddedResource(Assembly.GetExecutingAssembly(), 
    "outlook.addin.a.html", "a.html"); 

var bsjs = ResourceUtility.GetTempFileFromEmbeddedResource(Assembly.GetExecutingAssembly(), 
    "outlook.addin.bootstrap.js.bootstrap.min.js", "bootstrap.min.js"); 

public static string GetTempFileFromEmbeddedResource(Assembly assembly, string resourceName, string fileName) 
{ 
    string output; 
    using (Stream s = ResourceUtility.GetEmbeddedResourceStream(assembly, resourceName)) 
    { 
     StreamReader sr = new StreamReader(s); 
     output = sr.ReadToEnd(); 
    } 

    return CreateLocalTempFile(output, fileName); 
}