• T4模板使用笔记


    路径获取

    ① 获取当前解决方案路径

    string solutionsPath = Host.ResolveAssemblyReference("$(SolutionDir)");  

    ② 获取当前项目路径

    string projectPath = Host.ResolveAssemblyReference("$(ProjectDir)");  

    一个简单的Demo

    <#@ template debug="false" hostspecific="true" language="C#" #>  
    <#@ assembly name="System.Core" #>
    <#@ import namespace="System.Linq" #>
    <#@ import namespace="System.Collections.Generic" #>
    <#@ import namespace="System.IO" #>
    <#@ import namespace="System.Reflection" #>
    <#@ assembly name="$(SolutionDir)TestT4.CoreinDebugTestT4.Core.dll" #>
    <#@ import namespace="TestT4.Core" #>
    <#  
        string solutionsPath = Host.ResolveAssemblyReference("$(SolutionDir)");  
        string projectPath = Host.ResolveAssemblyReference("$(ProjectDir)");  
    #>  
    
    <#
    AppDomainTypeFinder appDomainTypeFinder=new AppDomainTypeFinder();
                var assemblies = appDomainTypeFinder.GetAssemblies();
                IEnumerable<Type> types = new List<Type>();
                foreach (var assemblie in assemblies)
                {
                    types = types.Concat(assemblie.GetTypes().
                    Where(type => !String.IsNullOrEmpty(type.Namespace)).
                    Where(type => type.BaseType != null &&type.BaseType == typeof(BaseEntity)));
                }
    
                foreach (var type in types)
                {
                    var typenamespace = type.Namespace;
                    if (!string.IsNullOrEmpty(typenamespace))
                    {
                     var splitNamespace = typenamespace.Split('.');
                     if(splitNamespace.Length>0){
                     var fileFolder=projectPath+@""+splitNamespace[splitNamespace.Length-1];
                     if(!Directory.Exists(fileFolder))
                    {
                        Directory.CreateDirectory(fileFolder);
                    }
                    string contractFileName= type.Name+"Map.cs";
                    string filePath = Path.Combine(fileFolder,contractFileName);
                    File.Delete(filePath);
                    File.AppendAllText(filePath,type.Name+"123");
                     }
                    }
                }
    #>
  • 相关阅读:
    如何使用log4net记录日志
    js鼠标左右键,键盘值
    MagicAjax的内部原理初探(一)
    关于VS2005内置web服务器和IIS的区别问题(讨论,收集)
    在Linux中使用C#
    方便你的测试(TestDriven.NET)
    转载:数据库sharding(scale up to scale out)
    单元测试--爱你不容易
    你期待已久的ASP.NET Atlas(一)[翻]
    Ajax底层代码简析(可直接用的框架)
  • 原文地址:https://www.cnblogs.com/ideacore/p/7803606.html
Copyright © 2020-2023  润新知