首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c# autocad dllimport by autocad版本

c# autocad dllimport by autocad版本
EN

Stack Overflow用户
提问于 2017-01-16 21:59:26
回答 1查看 285关注 0票数 0

我一直在使用菲利普·利夫斯马的“在选择运行时检测光标下的实体”中的程序,该程序位于1。它在ACAD2014中可以工作,但是现在我们使用ACAD2016。由于acdb19.dll的DLLImport和autocad2016需要acdb20.dll,它将无法工作。有没有办法让程序加载八个dll版本?我尝试使用netload和assembly.loadfrom,但都不起作用。

Point Monitor callback

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-17 02:02:32

DLL导入是在编译时设置的,因此最好的方法是为每个AutoCAD发行版编译两个版本。

编译项目后,您可以通过创建application.bundle文件夹来设置自动加载器。此文件夹可以放在c:\programdata\Autodesk\applicationPlugins中。在application.bundle文件夹中,创建一个名为Application的子文件夹,并将编译后的.DLL文件放入其中。

加载器由一个XML文件控制,该文件应命名为PackageContents.xml。以下是xml文件的一些示例代码:

代码语言:javascript
复制
    <?xml version="1.0" encoding="utf-8"?>
<ApplicationPackage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     Name="My AutoCAD App"
     Description="Does something in AutoCAD"
     Icon="./Application/MyIcon.ico"
     Author="Paul Nelson">
 <CompanyDetails Name="Paul Nelson"
     Url="http://www.stackoverflow.com"
     Email="myemail@email.com">
 </CompanyDetails>
 <Components>
  <!-- define the min and max versions of AutoCA in the next line -->
  <RuntimeRequirements OS="Win64" Platform="AutoCAD" SeriesMin="R19.0" SeriesMax="R22.0" />
  <ComponentEntry
   ModuleName=".\Application\MyApp.dll"
   LoadOnAutoCADStartup="true"
   LoadOnCommandInvocation="false"
   AppDescription="This is assembly MyApp."
   AppName="My AutoCAD App"
   AppType=".NET">

   <Commands GroupName="My Apps">
    <Command Local="MYAPP" Global="MYAPP" />
   </Commands>

  </ComponentEntry>
 </Components>
</ApplicationPackage>

最后一个技巧-确保.dll文件名不包含空格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41678077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档