我正在尝试寻找一种在构建项目时转换我的index.cshtml文件的方法。例如,将其转换为:
<script src="app-dev.js"></script>
当构建模式为Release
时,变成这样:
<script src="app-prod.js></script>
<script src="app-dev.js"></script>
当构建模式为Release
时,变成这样:
<script src="app-prod.js></script>
好的,这个会起作用。
为此添加一个应用程序设置:
<add key="Environment" value="dev"/>
然后在你的视图中添加以下内容:
<script src="app-@(System.Web.Configuration.WebConfigurationManager.AppSettings["Environment"]).js></script>
在其他环境中,只需使用转换来替换它,即:
<appSettings>
<add key="Environment" value="prod" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>
一种替代方案,我认为更好的方法是将WebConfiguration
管理器抽象成一个接口,并在模型中设置应用程序设置。
如果它是在通用布局中设置的,并且每次都设置,可以创建一个基本模型,并在基本控制器中的OnActionExecuted
中设置它。
public static MvcHtmlString CustomScriptTag(this HtmlHelper helper)
{
var scriptString = string.Format("<script type='text/javascript' src='{0}'></script>", VirtualPathUtility.ToAbsolute("~/app-prod.js"));
#if DEBUG
scriptString = string.Format("<script type='text/javascript' src='{0}'></script>", VirtualPathUtility.ToAbsolute("~/app-dev.js"));
#endif
return new MvcHtmlString(scriptString);
}
你可以从你的 cshtml 文件中这样调用它:
@Html.CustomScriptTag()