2012-08-16 49 views
1

我需要一个T4模板或其他东西来与Visual Studio集成,以生成解决方案中文件的相对路径。用于生成灵魂文件相对路径的T4模板

是他们的任何加载项或T4? 我与Visual Studio 2012年的工作

是这样的:

public static class Scripts 
    { 
     public static class AdminSkin 
     { 
      public static class Css 
      { 
       public const string Site = "/Scripts/adminskin/css/site.css"; 
       public const string SiteFa = "/Scripts/adminskin/css/site-fa.css"; 
       public const string Reset = "/Scripts/adminskin/css/reset.css"; 
       public const string SimpleList = "/Scripts/adminskin/css/simple-lists.css"; 
       public const string SpecialPages = "/Scripts/adminskin/css/special-pages.css"; 

      } 

      public static class Js 
      { 
       public const string Site = "/Scripts/adminskin/js/site.js"; 
       public const string JqueryaccessibleList = "/Scripts/adminskin/js/jquery.accessibleList.js"; 
       public const string Jquerytip = "/Scripts/adminskin/js/jquery.tip.js"; 
       public const string List = "/Scripts/adminskin/js/list.js"; 
       public const string Oldbrowsers = "/Scripts/adminskin/js/old-browsers.js"; 
       public const string LiveControl = "/Scripts/adminskin/js/live-control.js"; 
      } 
     } 

     public static class Calendar 
     { 
      public static class Js 
      { 
       public const string Calendar = "/Scripts/calendar/calendar.js"; 
       public const string CalendarSetup = "/Scripts/calendar/calendar-setup.js"; 

       public const string CalendarFa = "/Scripts/calendar/calendar-fa.js"; 
       public const string CalendarEn = "/Scripts/calendar/calendar-en.js"; 
      } 

      public static class Css 
      { 
       public const string Theme = "/Scripts/calendar/aqua/theme.css"; 
      } 
     } 

     public static class HighChart 
     { 
      public static class Js 
      { 
       public const string Highstock = "/Scripts/highchart/highstock.js"; 
       public const string HighstockModified = "/Scripts/highchart/highstock.src.js"; 
       public const string Theme = "/Scripts/highchart/themes/mytheme.js"; 
       public const string Exporting = "/Scripts/highchart/modules/exporting.src.js"; 
      } 
     } 

     public static class ImageGallery 
     { 
      public static class Js 
      { 
       public const string JqueryEasing = "/Scripts/ImageGallery/js/jquery.easing.1.3.min.js"; 
       public const string JqueryWtRotator = "/Scripts/ImageGallery/js/jquery.wt-rotator.min.js"; 
       public const string Preview = "/Scripts/ImageGallery/js/preview.js"; 
      } 

      public static class Css 
      { 
       public const string Preview = "/Scripts/ImageGallery/preview.css"; 
       public const string JqueryWtRotator = "/Scripts/ImageGallery/wt-rotator.css"; 
      } 
     } 

     public static class JQuery 
     { 
      public static class Js 
      { 
       public const string JqueryCdn = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js "; 
       public const string JqueryUiCdn = "http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.20/jquery-ui.min.js"; 
       public const string JqueryUiCssCdn = "http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.20/themes/ui-lightness/jquery-ui.css"; 

       public const string JqueryLocal = "/Scripts/jquery/jquery-1.7.min.js"; 
       public const string JqueryUiLocal = "/Scripts/jquery-ui/js/jquery-ui-1.8.20.custom.min.js"; 
       public const string JqueryUiCssLocal = "/Scripts/jquery-ui/css/ui-lightness/jquery-ui-1.8.20.custom.css"; 
      } 
     } 

     public static class Linq 
     { 
      public static class Js 
      { 
       public const string Linq = "/Scripts/linq.js/linq.min.js"; 
      } 
     } 


     public static class Moment 
     { 
      public static class Js 
      { 
       public const string Moment = "/Scripts/moment/moment.min.js"; 
      } 
     } 

     public static class Lang 
     { 
      public static class Js 
      { 
       public const string Jalali = "/Scripts/lang/jalali.js"; 
       public const string LangFa = "/Scripts/lang/lang-fa.js"; 
      } 
     } 

    } 

在此先感谢。

+0

你到底去做? – podiluska 2012-08-17 08:02:02

+0

@podiluska:因为我的网络应用程序有非常js,css和页面(html,.aspx)文件,并且我在多个地方引用了主题。所以我想要一种解决方案的文件地址生成到课堂并通过课程属性进行反思的方式。这保证了当一个文件被移动时,它的路径在类中更新,并且每当文件删除了编译时错误,我都会引用它。 – 2012-08-17 15:42:55

回答

1

T4MVC可能是你在找什么。这是一个T4 template for ASP.NET MVC apps,它将创建强类型的助手。它将生成一组您可以使用的类,而不是使用字符串。对于静态文件,如JavaScript文件会有一组类,如:

Links.Scripts.jquery_validate_js 

这将返回的形式“〜/脚本/ jquery.validate.js”的字符串。

对于名为AspPathGuru.tt的WebForms项目David Ebbo created a simple T4 template。目前只支持.aspx,.ascx和.master文件。但是,如果您编辑IgnoreFile方法,如下图所示,可以为其他文件生成代码:

bool IgnoreFile(FileInfo file) { 
    // Only look for a few specific extensions 
    switch (file.Extension.ToLowerInvariant()) { 
     case ".aspx": 
     case ".ascx": 
     case ".js": 
     case ".css": 
     case ".master": 
      return false; 
    } 

    return true; 
} 

这将产生你可以如下图所示使用路径类:

Paths.Scripts.jquery_1_4_1_js 
+0

感谢您的回复。我正在使用asp.net web表单而不是asp.net mvc。我已经通过nuget安装了T4MVC,编译后我得到了system.mvc参考找不到的错误 – 2012-08-19 13:47:48

+0

David Ebbo的确为Web窗体项目创建了一个简单的T4模板。我会更新答案。 – 2012-08-19 15:26:16

+0

谢谢,这就是我需要的。 – 2012-08-19 19:04:55