支持多个版本的AutoCAD——C#中的条件编译——Through the Interface
2013-10-30 21:40
471 查看
原文:Supporting multiple AutoCAD versions - conditional compilation in C#
有人问通过电子邮件如何获取上周发布的导入块的代码,然后在昨天的博文中讨论了如何在AutoCAD
2006中工作。我一直在使用AutoCAD 2007本,但为使它能在2007上工作只需要做很少的改动。
有人问通过电子邮件如何获取上周发布的导入块的代码,然后在昨天的博文中讨论了如何在AutoCAD 2006中工作。我一直在使用AutoCAD 2007本,但为使它能在2007上工作只需要做很少的改动。
首先,你需要确保你引用到项目中的acmgd.dll和acdbmgd.dll是正确的版本(可以安装的AutoCAD的版本的路径来区分它们)
其次,你需要稍微修改您的代码,如wblockcloneobjects()从2006到2007的时候改变了它的签名。下面的代码段显示了如何使用预处理器指令执行C#的条件编译。你只需要在你的项目设置中设置AC2006或AC2007作为“条件编译符号”:
在上述代码中你可能会使用#else而不是#elif,仅仅只是因为因为这会使你的代码更加适应未来的更改:它会自动支持新版本而不需要特别添加代码用以检查他们。
另一方面,你可以指定一整个方法只在特定的版本上编译。首先,你需要导入System.Diagnostics命名空间。
然后你可以使用条件属性来声明一个特定的方法(在这里是一个命令)为一个特定版本的AutoCAD(如果你愿意,你也可以通过条件预处理器的DEBUG符号指定一个Debug-only命令):
有人问通过电子邮件如何获取上周发布的导入块的代码,然后在昨天的博文中讨论了如何在AutoCAD
2006中工作。我一直在使用AutoCAD 2007本,但为使它能在2007上工作只需要做很少的改动。
有人问通过电子邮件如何获取上周发布的导入块的代码,然后在昨天的博文中讨论了如何在AutoCAD 2006中工作。我一直在使用AutoCAD 2007本,但为使它能在2007上工作只需要做很少的改动。
首先,你需要确保你引用到项目中的acmgd.dll和acdbmgd.dll是正确的版本(可以安装的AutoCAD的版本的路径来区分它们)
其次,你需要稍微修改您的代码,如wblockcloneobjects()从2006到2007的时候改变了它的签名。下面的代码段显示了如何使用预处理器指令执行C#的条件编译。你只需要在你的项目设置中设置AC2006或AC2007作为“条件编译符号”:
#if AC2006 mapping = sourceDb.WblockCloneObjects(blockIds, destDb.BlockTableId, DuplicateRecordCloning.Replace, false); #elif AC2007 sourceDb.WblockCloneObjects(blockIds, destDb.BlockTableId, mapping, DuplicateRecordCloning.Replace, false); #endif
在上述代码中你可能会使用#else而不是#elif,仅仅只是因为因为这会使你的代码更加适应未来的更改:它会自动支持新版本而不需要特别添加代码用以检查他们。
另一方面,你可以指定一整个方法只在特定的版本上编译。首先,你需要导入System.Diagnostics命名空间。
然后你可以使用条件属性来声明一个特定的方法(在这里是一个命令)为一个特定版本的AutoCAD(如果你愿意,你也可以通过条件预处理器的DEBUG符号指定一个Debug-only命令):
namespace BlockImport { public class BlockImportClass { [Conditional("AC2007"),CommandMethod("IB")] public void ImportBlock() { ...
相关文章推荐
- 替换AutoCAD的OPEN命令——Through the Interface
- 条件编译解决AutoCAD多版本问题
- 获取AutoCAD中.Net程序定义的命令——Through the Interface
- 条件编译解决AutoCAD多版本问题
- Through the Interface——.NET 和 AutoCAD
- 优化AutoCAD .NET 程序的加载——Through the Interface
- 在AutoCAD中使用Python——Through the Interface
- 一个简单的动态编译器,支持C#和VB.NET。当你想测试一些简单的代码的时候可以使用。
- Matlab2014a使用VS2015混合编译-低版本matlab支持高版本的vs的方法
- C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 角色成员功能的改进支持公司加入到角色
- C# #define条件编译详解
- ANSI Debug 与Unicode Debug版本同时支持的VS2008编译开关的设置
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(七):GDAL C#接口库的编译与SharpMap(Change Set 21021)对影像的支持研究
- c# 条件编译
- C#反编译工具Reflector使用方法,(支持VB、Delphi等)
- webkit qt版快速编译 支持wml版本
- 45、C#编译版本和数据库连接问题
- 本地编译全志R系列的步骤7(Ubuntu 17.04非长期支持版本)原始LOG未整理
- C#判断系统是64位还是32位 支持.net4.0以前的版本