知识大全 针对不同.NET版本的条件编译
Posted 版本
篇首语:书籍是横渡时间大海的航船。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 针对不同.NET版本的条件编译相关的知识,希望对你有一定的参考价值。
针对不同.NET版本的条件编译 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
为了在 NET 下能够编译成功 我写了一个文件 Patch cs 定义了System Runtime CompilerServices ExtensionAttribute 类型 这样就可以在 下使用lambda表达式和扩展方法了 同时 添加了几个用到的System Core dll引入的Action类型
namespace System Runtime CompilerServices
public class ExtensionAttribute : Attribute
namespace System
public delegate void Action()
public delegate void Action<T T >(T t T t )
然而 要在 NET 下编译 因为类型已经存在 必须注释掉Patch cs 很麻烦 于是想通过条件编译来解决 即
#if NET
namespace System Runtime CompilerServices
public class ExtensionAttribute : Attribute
namespace System
public delegate void Action()
public delegate void Action<T T >(T t T t )
#endif
问题是 net 里没有定义和 net版本有关的指示符 怎么办呢?自己动手 丰衣足食 使用Build Events在编译之前自动侦测出项目所使用的 net版本 定义出我们想要的指示符
在 C#模板编程( ) 编写C#预处理器 让模板来的再自然一点一文中 写了一个程序 Csmacro exe 来实现C#下的模板机制 本文在Csmacro exe 的基础上 增加侦测项目所引用的 net 版本的功能
原理 查找项目目录下的 csproj 文件 解析它 找到节点TargetFrameworkVersion 判断 net版本 然后生成一个Csmacro_Template cs文件 在里面 #define 版本指示符 例如 对 Net 项目 生成的 Csmacro_Template cs 文件内容为
#define NET
修改后Csmacro的代码可在 //github /xiaotie/GebCommon上下载(目前只处理了 net 和 如需要针对其它版本 可自行修改代码) 有了 Csmacro 一切就好办了
第一步 把 Csmacro exe 放在Path路径下
第二步 打开需要条件编译的项目 添加 Pre build 事件 Csmacro exe $(ProjectDir)
第三步 编辑源文件 如 Patch cs 文件修改为
#region include Csmacro_Template cs
#endregion
#if NET
namespace System Runtime CompilerServices
public class ExtensionAttribute : Attribute
namespace System
public delegate void Action()
public delegate void Action<T T >(T t T t )
#endif
#region include 是我引入的 Csmacro 宏语法 详见 C#模板编程( ) 编写C#预处理器 让模板来的再自然一点 一文 点击编译 系统会生成一个 Patch_Csmacro cs 文件 内容如下
#define NET
#if NET
namespace System Runtime CompilerServices
public class ExtensionAttribute : Attribute
namespace System
public delegate void Action()
public delegate void Action<T T >(T t T t )
#endif
第四步 把生成的 Patch_Csmacro cs 添加到项目中来
cha138/Article/program/net/201311/16137相关参考
详解.NET中的动态编译 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 代码的动态编译并执行是一
详解.NET中的动态编译技术 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 代码的动态编译并执行
详解.NET中的动态编译[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 代码的动态编译并执
详解.NET中的动态编译技术[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 代码的动态编译
ASP.NET2.0的编译模型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 支持两种编译模型(
详解.NET中的动态编译[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!usingSystem
详解.NET中的动态编译[5] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 对于客户端的输入程
详解.NET中的动态编译[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 需要解释的是这里我
详解.NET中的动态编译[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 接下来在原来基础上
浅析ASP.NET编译器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 要深入理解ASPNET动