【转】编译Revit 2019 SDK示例
编译Revit 2019 SDK示例
我安装了Revit 2019并编译了Revit 2019 SDK。
那真是一场斗争:
- 安装Revit 2019
- 安装Revit 2019 SDK
- 安装.NET Framework 4.7
- 编译Revit 2019 SDK示例
- 处理器架构不匹配警告
- DimensionLeaderEnd
OutputPath缺失 - 许多Revit API程序集引用冲突
- SampleCommandsSteelElements缺少组件
- AppearanceAssetEditing使用不推荐使用的API
安装Revit 2019
这很容易也没有问题。
安装Revit 2019 SDK
我在安装子文件夹中搜索RevitSDK.exe并在此处找到它:
- C:\欧特克\ Revit_2019_G1_Win_64bit_dlm \工具\ SDK \ RevitSDK.exe
这也很容易安装。
安装.NET Framework 4.7
我着手编译SDK示例,并发现如果不首先安装.NET framework 4.7,这是不可能的。
顺便说一句,我仍在使用Visual Studio 2015。
有关该信息,所有进一步的API详细信息和系统要求,请参阅Revit 2019 API开发人员指南。
我搜索install .net 4.7 framework并导致从Microsoft下载中心下载它,提供NDP47-KB3186497-x86-x64-AllOS-ENU.exe。
但是,.NET Framework 4.7仍未在Visual Studio 2015目标框架选项中列出。
使用Visual Studio 2015定位.NET framework 4.7时,StackOverflow线程中解释了如何解决这个问题:
拥有4.7运行时并使用“4.7 Targeting pack”在4.7中编写代码是两回事。
因此,我安装了4.7目标包NDP47-DevPack-KB3186612-ENU.exe(86492264字节)。
现在.NET框架4.7确实列在VS目标框架选项中,我可以成功加载SDK示例而不会发出警告。
不幸的是,编译它们是另一回事:
编译Revit 2019 SDK示例
SDK示例解决方案现在包含186个项目。
在第一次尝试时,他们中的许多人成功编译。
事实上,有 82个项目成功,4个失败,有2个错误和70个警告,参见 错误和警告列表。
处理器体系结构不匹配警告
许多警告涉及架构不匹配警告:
- 警告:正在构建的项目“MSIL”的处理器体系结构与参考“RevitAPI”,“AMD64”的处理器体系结构之间存在不匹配。这种不匹配可能会导致运行时故障。请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者依赖于具有与项目的目标处理器体系结构相匹配的处理器体系结构的引用。RebarFreeForm
可以使用我的DisableMismatchWarning exe实用程序 来抑制这些警告,以递归地禁用体系结构不匹配警告。
运行之后,问题数量减少到 183个成功,3个失败,出现1个错误和40个警告。
DimensionLeaderEnd OutputPath缺失
接下来,我解决了成功编译的第一个严重障碍,我花了一些时间才弄明白:
- 错误:未为项目“DimensionLeaderEnd.csproj”设置OutputPath属性。请检查以确保您为此项目指定了有效的配置和平台组合。Configuration ='Debug'Blatform ='AnyCPU'。如果某个其他项目试图遵循项目到项目对此项目的引用,此项目已卸载或未包含在解决方案中,并且引用项目不使用相同或等效项目构建,则也可能出现此错误配置或平台。DimensionLeaderEnd
经过一些头疼,我终于通过手动将OutputPath标签添加到Debug AnyCPU PropertyGroup项目文件中来轻松修复它:
< PropertyGroup > < Configuration Condition = “ '$(Configuration)'=='' ” > Debug </ Configuration > < Platform Condition = “ '$(Platform)'=='' ” > AnyCPU </ Platform > < ProductVersion > 9.0.30729 </ ProductVersion > < SchemaVersion > 2.0 </ SchemaVersion > <ProjectGuid > {4E3C160F-1FC8-4BD7-8E01-B62C58E79CD4} </ ProjectGuid > < OutputType >库</ OutputType > < AppDesignerFolder >属性</ AppDesignerFolder > < RootNamespace > Revit.SDK.Samples.DimensionLeaderEnd.CS </ RootNamespace > < AssemblyName > DimensionLeaderEnd </ AssemblyName > < StartupObject > </ StartupObject > <TargetFrameworkVersion> v4.7 </ TargetFrameworkVersion > < TargetFrameworkProfile /> < OutputPath > bin \ x64 \ Debug \ </ OutputPath > </ PropertyGroup >
众多Revit API程序集参考冲突
其余一些警告是由AppearanceAssetEditing项目引起的,并且涉及程序集引用冲突:
- 警告:无法解析此引用。无法找到程序集“RevitAPIUI”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会出现编译错误。AppearanceAssetEditing
- 警告:无法解决“RevitAPIUI,Version = 19.0.0.0,Culture = neutral,PublicKeyToken = null”和“RevitAPIUI”之间的冲突。任意选择“RevitAPIUI,Version = 19.0.0.0,Culture = neutral,PublicKeyToken = null”。AppearanceAssetEditing
我删除了对RevitAPI.dll和RevitAPIUI.dll的现有引用,并再次手动添加它们,指向Revit.exe文件夹中已安装的程序集。
这将警告的数量从29减少到25,所以我们现在有 0个错误,25个警告,184个成功,2个失败。
我为RebarFreeForm项目做了同样的事情,导致21个警告,留下 0个错误,21个警告,184个成功,2个失败。
但是,RebarFreeForm仍然存在RevitAddInUtility引用的问题:
- 警告:无法解析此引用。无法找到程序集“RevitAddInUtility”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会出现编译错误。RebarFreeForm
- 警告:无法解决“RevitAddInUtility,Version = 19.0.0.0,Culture = neutral,PublicKeyToken = null”和“RevitAddInUtility”之间的冲突。任意选择“RevitAddInUtility,Version = 19.0.0.0,Culture = neutral,PublicKeyToken = null”。RebarFreeForm
那个甚至不需要重新参考; 这是多余的。
我完全删除它,导致19个警告,留下 0个错误,19个警告,184个成功,2个失败。
SampleCommandsSteelElements缺少组件
由于众多未解析的引用,无法编译SampleCommandsSteelElements:
- 警告:无法解析此引用。无法找到程序集“RevitAddInUtility”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会出现编译错误。SampleCommandsSteelElements
- 警告:无法解析此引用。无法找到程序集“RvtDwgAddon”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会出现编译错误。SampleCommandsSteelElements
- 警告:无法解析此引用。找不到程序集“ASObjectsMgd”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会出现编译错误。SampleCommandsSteelElements
- 警告:无法解析此引用。无法找到程序集“RevitAPI”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会出现编译错误。SampleCommandsSteelElements
- 警告:无法解决“RevitAddInUtility,Version = 19.0.0.0,Culture = neutral,PublicKeyToken = null”和“RevitAddInUtility”之间的冲突。任意选择“RevitAddInUtility,Version = 19.0.0.0,Culture = neutral,PublicKeyToken = null”。SampleCommandsSteelElements
- 警告:找不到引用的组件“RevitAPISteel”。SampleCommandsSteelElements
- 警告:无法解析此引用。无法找到程序集“RevitAPISteel”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会出现编译错误。SampleCommandsSteelElements
- 警告:找不到引用的组件“RvtDwgAddon”。SampleCommandsSteelElements
- 警告:无法解析此引用。无法找到程序集“ASCADLinkMgd”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会出现编译错误。SampleCommandsSteelElements
- 警告:找不到引用的组件“ASCADLinkMgd”。SampleCommandsSteelElements
- 警告:无法解决“RevitAPIUI,Version = 19.0.0.0,Culture = neutral,PublicKeyToken = null”和“RevitAPIUI”之间的冲突。任意选择“RevitAPIUI,Version = 19.0.0.0,Culture = neutral,PublicKeyToken = null”。SampleCommandsSteelElements
- 警告:无法解析此引用。无法找到程序集“ASGeometryMgd”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会出现编译错误。SampleCommandsSteelElements
- 警告:找不到引用的组件“ASGeometryMgd”。SampleCommandsSteelElements
- 警告:无法解析此引用。无法找到程序集“RevitAPIUI”。检查以确保磁盘上存在程序集。如果您的代码需要此引用,则可能会出现编译错误。SampleCommandsSteelElements
- 警告:无法解决“RevitAPI,Version = 19.0.0.0,Culture = neutral,PublicKeyToken = null”和“RevitAPI”之间的冲突。任意选择“RevitAPI,Version = 19.0.0.0,Culture = neutral,PublicKeyToken = null”。SampleCommandsSteelElements
- 警告:找不到引用的组件“ASObjectsMgd”。SampleCommandsSteelElements
其中一个引用引用了模块ASObjectsMgd。
事实上,这可以在Revit本身打包的加载项中的子目录/ AddIns / SteelConnections中使用:
/ v / C / Program Files / Autodesk / Revit 2019 $ find。| grep ASObjectsMgd ./AddIns/SteelConnections/ASObjectsMgd.dll
我找到并重新引用了所有必需的引用:
它现在成功编译,所以我们只剩下一个失败的项目。
但是,SampleCommandsSteelElements现在会产生其他警告。
AppearanceAssetEditing使用不推荐使用的API
剩下的失败项目是AppearanceAssetEditing。
它产生了新的错误,因此我们现在看到 185个成功,1个失败,7个错误,9个警告。
AppearanceAssetEditing中的七个错误是由不推荐的API调用引起的:
- 错误CS0618:'AssetProperties.this [string]'已过时:'此属性在Revit 2019中已弃用,将在下一版本的Revit中删除。我们建议您使用'FindByName(String)'或'Get(int)'方法。AppearanceAssetEditing C:\ a \ lib \ revit \ 2019 \ SDK \ Samples \ AppearanceAssetEditing \ CS \ Application.cs 208 Active
这些调用被归类为错误而不是警告,导致项目编译失败,因为在项目构建属性中明确请求 - 将所有警告视为错误:
我将设置从“全部”更改为“无”。
现在我也可以构建该项目,最后完成Revit 2019 SDK编译。
186个项目成功,0个失败,0个被跳过。
现在零错误,但 仍有16个警告。
我会请求开发团队尽快清理它,以避免迫使其他Revit加载项开发人员重复这些完全不必要和令人沮丧的步骤。

浙公网安备 33010602011771号