Revit多版本代码编译
2017-08-26 19:58
453 查看
Revit开发,Visual Studio单份代码和解决方案生成多个版本插件设置
Revit二次开发和AutoCAD二次开发一样,都面临着一个很恶心的问题,就是多版本问题。Revit每年出新版本,API的改动虽说最近的几个版本改动不大,但总会有一些被标记为废弃。作为开发者,你也没法要求客户时刻紧跟Revit版本升级,这种情况下,一个插件就得支持好多个Revit版本。一旦有新Revit版本出现,就得有新的一份项目配置。之前我不知道有这个方法,自己用的是最笨的,每个版本都拷贝一份代码,根据不同版本的API修改对应版本的代码。但这样的问题很大,如果功能要修改,那我得修改多份代码这个就恶心了。。。最近网上看Arx文章,发现可以试试之前Arx多版本编译的方法可不可以用在Revit上,然后发现竟然可行。下面让我们用具体的环境来说明这个方法:比如说,你现在已经有了一个插件的vs解决方案sln, 里面有个项目是针对Revit2016的设置和配置叫
Exporter,对应的本地文件是
Exporter.csproj文件如下图
现在,想要让插件支持Revit2017,可以这么干:
复制一份
Exporter.csproj文件,改名为
Exporter2017.csproj,和原先的文件放在一起,如下图:
在Visual Studio中将复制后的新项目文件也添加到当前的解决方案中,你会发现新添加的
Exporter2017项目下也同样有一份源码,在vs中看着是分属不同的项目,但其实他们在本地都是同一份源码文件。
这样分别对不同的项目设置引用dll,分别设置.net framework版本,分别设置输出路径。最重要的,是要对不同的项目设置一个条件编译符号,这个设置可以右键对应项目属性【生成】页签下,我对
Exporter2017项目设置的编译符号是
_Revit2017,原先的
Exporter项目设置的是
_Revit2016,如图
在代码中,针对版本间不同的API,我们可以使用
#if,
#elif,
#endif和我们定义好的条件编译符号来控制哪段代码在哪个项目下起作用,如下图。同时,当一个源文件同时属于两个项目时,可以通过vs上方的导航条来切换当前源码所属的上下文。
相关文章推荐
- vs2008编译Xvid源代码 1.2.2版本
- 关于编译4+2版本遇到的不是代码的问题和添加launcher以及svn上传问题
- 抽取webrtc的代码需要vs2013以上vs版本才能编译
- 解决:高版本jdk编译低版本代码时eclipse提示Access restriction:The type 'Unsafe' is not accessible due to restriction on required library
- mfc对话框程序在ide编译可运行,但编译完毕的debug和release版本不能运行。。后来发现原因是:用到的sqlite数据库文件没在对应目录下,而代码中没有try..catch..
- None of the valid provisioning profiles allowed the specified entitlements(有关不同版本xcode之间切换编译代码问题)
- Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(3):寻找正确的代码版本
- 在高版本Xcode中编译非ARC代码
- 用高版本vs编译旧VC代码时,如何处理无法从“const char [10]”转换为“LPCWSTR”的错误
- 【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2.0.1版本跨平台整合NDK+Xcode,Xcode编写&编译代码,Android导入打包运行即可!
- xcode针对不同IOS版本的代码编译问题
- vs2008编译Xvid源代码 1.2.2版本
- 下载编译chromium代码-android版本亲测60
- android系统版本代码的下载、编译及发布
- MacosX 下GCC编译指定版本的代码
- 记录代码隔离,即版本中不需要的代码就无需编译
- Visual Studio 实现 编写一套.net代码,同时编译到 多个平台,多版本的操作笔记
- Revit中Dynamo编程——利用反编译工具读取Dynamo的ProtoGeometry.dll的代码
- Memcached 代码阅读(1) -windows版本编译
- Android studio低版本让3.0编译通过,更好的用studio看代码(找不到原作者那个网址链接了,望见谅!)