2009-11-15 103 views
2

我目前正在開發一個ASP.NET Web應用程序,並且在旅途中即離線時進行大部分開發工作。我打算爲JQuery和其他一些腳本資源使用Google/Microsoft/an-other CDN。在部署時將本地(JQuery)鏈接轉換爲CDN鏈接

我的問題是,是否有一種直接的方式來開發解決方案中的本地文件鏈接,但在部署/發佈構建時指向CDN? 提前謝謝!

回答

2

你可以寫一個輔助函數:

public static string JQuerySource() 
{ 
    var config = WebConfigurationManager.OpenWebConfiguration("~"); 
    var compilation = config.GetSection("system.web/compilation") as CompilationSection; 
    if (compilation == null || compilation.Debug) 
    { 
     // Running in Debug mode 
     return "/scripts/jquery.js"; 
    } 
    // Running in Release mode 
    return "http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"; 
} 

那你會使用這樣的:

<script type="text/javascript" src="<%=JQuerySource() %>"></script> 
0

您可以在部署...之前更改鏈接...?

更新:

一個簡單的全部替換,如果你有一處處鏈接就足夠了。

我知道這些可能是非常愚蠢和簡單的解決方案,但在我看來,您的問題太簡單了,無法進行抽象或編寫額外的代碼。

但是,如果你一定要,這是做的一種方式:

創建包含值的XML文件:

MyAppSettings.xml

<?xml version="1.0" encoding="utf-8" ?> 

<MyAppSettings> 
    <JqueryLink 
     value="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" 
     store1="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" 
     store2="../jquery.min.js" 
     > 
    </JqueryLink> 
</MyAppSettings> 

,並從價值XML文件:

public static string GetJqueryUrl() 
    { 
     XElement file = XElement.Load(HttpContext.Current.Server.MapPath("~/App_Data/MyAppSettings.xml")); 
     string jquerylink = file.Element("JqueryLink").Attribute("value"); 
     return jquerylink; 
    } 

您可以爲以前的代碼創建一個輔助函數並使用它遍佈你的代碼。

無論何時您想要在部署和脫機鏈接之間切換,只需更改xml文件中的「value」參數即可。

您可以將屬性「store1」和「store2」保留在那裏,這樣我就不必記得當我切換它們時它們是什麼。

+1

我是知道的。我希望將這種方法自動化,以便在每一次應用程序在下一個十年中部署時都不需要識別這些鏈接。我可以避免更好的手動任務。 – 2009-11-15 08:14:03

+0

更新了我的答案。 – Omar 2009-11-15 08:31:46