2017-01-16 71 views
0

我一直在使用該程序從「在選擇運行時在光標下檢測實體」由Philippe Leefsma位於這裏1。它在ACAD2014中工作,但現在我們正在使用ACAD2016。它不會工作,因爲acdb19.dll的DLLImport和autocad2016需要acdb20.dll。有沒有辦法讓程序加載dll版本?我嘗試使用netload和assembly.loadfrom並沒有工作。c#autocad dllimport通過autocad版本

Point Monitor callback

回答

0

的DLL進口設置在編譯時所以最好的辦法是編制兩個版本適用於AutoCAD的每個版本。

項目編譯完成後,您可以通過創建application.bundle文件夾來設置自動加載器。這個文件夾可以放在c:\ programdata \ Autodesk \ applicationPlugins中。在application.bundle文件夾中,創建一個名爲Application的子文件夾,並將編譯後的.DLL文件放在那裏。 application.bundle folder contents

加載程序由一個應該命名爲PackageContents.xml的XML文件控制。以下是xml文件的一些示例代碼: -

<?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="[email protected]"> 
</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

感謝您的信息。我們使用application.bundle作爲自動更新內部DLL文件的手段。沒有發生在我那裏做版本檢查。 – North