找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2300|回复: 2

[分享] 共享一套代码生成不同版本的DLL

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-6-5 15:56:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1 在现有解决方案下, 选择"新建项目"

2 对新建项目的属性、引用进行设置(选择不同版本cad的dll引用、net框架、命名空间可以增加个版本后缀)

3 在新建项目下-〉右击-〉添加-〉现有项

4 在打开的对话框内选择已有的代码文件,然后点右下角的“添加”按钮,选择“添加为链接

这样就可以用一套代码一次编译出适应不同AutoCAD版本DLL
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 859个

财富等级: 财运亨通

 楼主| 发表于 2014-6-9 02:40:54 | 显示全部楼层
http://blog.csdn.net/u011511587/article/details/13745055

......
首先,你需要确保你引用到项目中的acmgd.dll和acdbmgd.dll是正确的版本(可以安装的AutoCAD的版本的路径来区分它们)
其次,你需要稍微修改您的代码,如wblockcloneobjects()从2006到2007的时候改变了它的签名。下面的代码段显示了如何使用预处理器指令执行C#的条件编译。你只需要在你的项目设置中设置AC2006或AC2007作为“条件编译符号”:

  1. #if AC2006
  2.         mapping = sourceDb.WblockCloneObjects(blockIds,
  3.                                               destDb.BlockTableId,
  4.                                               DuplicateRecordCloning.Replace,
  5.                                               false);
  6. #elif AC2007
  7.         sourceDb.WblockCloneObjects(blockIds,
  8.                                     destDb.BlockTableId,
  9.                                     mapping,
  10.                                     DuplicateRecordCloning.Replace,
  11.                                     false);
  12. #endif
复制代码
在上述代码中你可能会使用#else而不是#elif,仅仅只是因为因为这会使你的代码更加适应未来的更改:它会自动支持新版本而不需要特别添加代码用以检查他们。
另一方面,你可以指定一整个方法只在特定的版本上编译。首先,你需要导入System.Diagnostics命名空间。
然后你可以使用条件属性来声明一个特定的方法(在这里是一个命令)为一个特定版本的AutoCAD(如果你愿意,你也可以通过条件预处理器的DEBUG符号指定一个Debug-only命令):

  1. namespace BlockImport
  2. {
  3.   public class BlockImportClass
  4.   {
  5.     [Conditional("AC2007"),CommandMethod("IB")]
  6.     public void ImportBlock()
  7.     {
  8. ...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-6-9 08:36:02 | 显示全部楼层
谢谢楼主,辛苦了,好好学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-23 02:02 , Processed in 0.332363 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表