您的位置:首页 > 编程语言

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上方的导航条来切换当前源码所属的上下文。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Revit开发
相关文章推荐