c# - AutoCAD 插件无法定位资源

标签 c# .net autocad-plugin

我编写了一个 AutoCAD 插件,它根据用户选择的表单项显示图像。调用显示图像的示例是

previewBox.Image = System.Drawing.Image.FromFile("Window Width.PNG");

但是,即使 .PNG 文件与我的 .DLL 文件位于同一目录中,我仍会收到一条错误消息,指出无法找到图像。我得到的完整错误文本如下。

Application does not support just-in-time (JIT) debugging. See the end of this message for details.

************** Exception Text **************
System.IO.FileNotFoundException: Window Height.PNG
   at System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement)
   at WindowsAndDoorsPlugin.WindowsDoors.heightBox_isClicked(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.TextBoxBase.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.TextBoxBase.WndProc(Message& m)
   at System.Windows.Forms.TextBox.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18444 built by: FX451RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Acdbmgd
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/AcdbMgd.DLL
----------------------------------------
System
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
AdApplicationFrame
    Assembly Version: 0.0.0.0
    Win32 Version: 4.0.19.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/AdApplicationFrame.DLL
----------------------------------------
AdWindows
    Assembly Version: 4.0.24.0
    Win32 Version: 4.0.24.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/AdWindows.DLL
----------------------------------------
PresentationFramework
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework/v4.0_4.0.0.0__31bf3856ad364e35/PresentationFramework.dll
----------------------------------------
WindowsBase
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/WindowsBase/v4.0_4.0.0.0__31bf3856ad364e35/WindowsBase.dll
----------------------------------------
PresentationCore
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/PresentationCore/v4.0_4.0.0.0__31bf3856ad364e35/PresentationCore.dll
----------------------------------------
System.Xaml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xaml/v4.0_4.0.0.0__b77a5c561934e089/System.Xaml.dll
----------------------------------------
System.Xml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
PresentationFramework.Classic
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework.classic/v4.0_4.0.0.0__31bf3856ad364e35/PresentationFramework.classic.dll
----------------------------------------
System.Drawing
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
accoremgd
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/accoremgd.DLL
----------------------------------------
Acmgd
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/Acmgd.DLL
----------------------------------------
System.Configuration
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
AcWindows
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/AcWindows.DLL
----------------------------------------
AcCui
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/AcCui.DLL
----------------------------------------
PresentationFramework-SystemXml
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework-SystemXml/v4.0_4.0.0.0__b77a5c561934e089/PresentationFramework-SystemXml.dll
----------------------------------------
PresentationFramework.Aero
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework.Aero/v4.0_4.0.0.0__31bf3856ad364e35/PresentationFramework.Aero.dll
----------------------------------------
WindowsFormsIntegration
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/WindowsFormsIntegration/v4.0_4.0.0.0__31bf3856ad364e35/WindowsFormsIntegration.dll
----------------------------------------
AcWindows.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcWindows.resources.DLL
----------------------------------------
System.Windows.Forms
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
PresentationUI
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationUI/v4.0_4.0.0.0__31bf3856ad364e35/PresentationUI.dll
----------------------------------------
System.Xml.Linq
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml.Linq/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll
----------------------------------------
PresentationFramework-SystemXmlLinq
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework-SystemXmlLinq/v4.0_4.0.0.0__b77a5c561934e089/PresentationFramework-SystemXmlLinq.dll
----------------------------------------
FeaturedAppsPlugin
    Assembly Version: 19.0.0.0
    Win32 Version: 19.0.55.0.0
    CodeBase: file:///C:/ProgramData/Autodesk/ApplicationPlugins/Autodesk%20FeaturedApps.bundle/Contents/Windows/2014/FeaturedAppsPlugin.dll
----------------------------------------
ContextualTabSelectorRules
    Assembly Version: 0.0.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/AcWindows.dll
----------------------------------------
PresentationFramework-SystemCore
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework-SystemCore/v4.0_4.0.0.0__b77a5c561934e089/PresentationFramework-SystemCore.dll
----------------------------------------
Microsoft.Expression.Interactions
    Assembly Version: 4.0.0.0
    Win32 Version: 2.0.20520.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/Microsoft.Expression.Interactions.DLL
----------------------------------------
ManagedMC3
    Assembly Version: 7.2.0.0
    Win32 Version: 7.2.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/ManagedMC3.DLL
----------------------------------------
UIAutomationTypes
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/UIAutomationTypes/v4.0_4.0.0.0__31bf3856ad364e35/UIAutomationTypes.dll
----------------------------------------
AcTaskDialogs
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/AcTaskDialogs.DLL
----------------------------------------
AcTaskDialogs.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcTaskDialogs.resources.DLL
----------------------------------------
AutoCAD CSharp plug-in4
    Assembly Version: 1.0.5421.29773
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/Administrator/AppData/Roaming/Autodesk/ApplicationPlugins/Clearspan.bundle/Contents/Windows/ShowHideLayers.dll
----------------------------------------
WindowsAndDoorsPlugin
    Assembly Version: 1.0.5451.27174
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/Administrator/AppData/Roaming/Autodesk/ApplicationPlugins/Clearspan.bundle/Contents/Windows/WindowsDoorsTool.dll
----------------------------------------
AcAeNet.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcAeNet.resources.DLL
----------------------------------------
AcButterflyExt.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcButterflyExt.resources.DLL
----------------------------------------
AcCloudRender.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcCloudRender.resources.DLL
----------------------------------------
AcCustomize.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcCustomize.resources.DLL
----------------------------------------
AcDxWizard.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcDxWizard.resources.DLL
----------------------------------------
AcExportLayoutUI.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcExportLayoutUI.resources.DLL
----------------------------------------
AcInterfere.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcInterfere.resources.DLL
----------------------------------------
AcLayer.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcLayer.resources.DLL
----------------------------------------
AcLayerTools.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcLayerTools.resources.DLL
----------------------------------------
AcMrUi.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcMrUi.resources.DLL
----------------------------------------
AcMultiLineUi.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcMultiLineUi.resources.DLL
----------------------------------------
AcRecoverAll.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcRecoverAll.resources.DLL
----------------------------------------
AcScaleList.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcScaleList.resources.DLL
----------------------------------------
AcUnderlay.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcUnderlay.resources.DLL
----------------------------------------
AcViewTransitionsUi.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcViewTransitionsUi.resources.DLL
----------------------------------------
AdskConnectionPointMgd.resources
    Assembly Version: 1.0.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AdskConnectionPointMgd.resources.DLL
----------------------------------------
AcCalcUi.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcCalcUi.resources.DLL
----------------------------------------
AcLivePreviewContext
    Assembly Version: 0.0.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/AcWindows.dll
----------------------------------------
AcLayer
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/AcLayer.DLL
----------------------------------------
PresentationFramework.Luna
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework.Luna/v4.0_4.0.0.0__31bf3856ad364e35/PresentationFramework.Luna.dll
----------------------------------------
AcMrUi
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/AcMrUI.DLL
----------------------------------------
FeaturedAppsPlugin.resources
    Assembly Version: 19.0.0.0
    Win32 Version: 19.0.55.0.0
    CodeBase: file:///C:/ProgramData/Autodesk/ApplicationPlugins/Autodesk%20FeaturedApps.bundle/Contents/Resources/en-US/FeaturedAppsPlugin.resources.dll
----------------------------------------
UIAutomationProvider
    Assembly Version: 4.0.0.0
    Win32 Version: 4.0.30319.18408 built by: FX451RTMGREL
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/UIAutomationProvider/v4.0_4.0.0.0__31bf3856ad364e35/UIAutomationProvider.dll
----------------------------------------
AcCommandToolTips
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/AcCommandToolTips.DLL
----------------------------------------
AcCommandToolTips.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcCommandToolTips.resources.DLL
----------------------------------------
Connect.Client.AutoCAD
    Assembly Version: 3.1.2.0
    Win32 Version: 3.1.2.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/Connect.Client.AutoCAD.DLL
----------------------------------------
AcDialogToolTips
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/AcDialogToolTips.DLL
----------------------------------------
AcDialogToolTips.resources
    Assembly Version: 19.1.0.0
    Win32 Version: 19.1.18.0.0
    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202014/en-US/AcDialogToolTips.resources.DLL
----------------------------------------

************** JIT Debugging **************
Application does not support Windows Forms just-in-time (JIT)
debugging. Contact the application author for more
information.

最佳答案

这是因为 AutoCAD 的工作目录是 AutoCAD 文件夹(通常是 C:\Program Files\Autodesk\<version>\ ),而不是您的 dll 插件来自的文件夹。这种行为对所有应用程序都很常见 - 无论是否加载外部库,运行目录仍然是可执行应用程序开始的地方。

您需要绝对地或相对于该 AutoCAD 文件夹来引用您的文件。但是,您可以通过 Assembly.Location 获取 DLL 的完整路径。因此

typeof(MyType).Assembly.Location

使用它,您可以使用以下代码获取所需的文件:

using System.IO;
...
var dllPath = typeof(MyType) // Where 'MyType' is a type defined in your assembly
    .Assembly.Location;
var folderPath = new FileInfo(dllPath).Directory.FullName;
var fullPath = Path.Combine(folderPath, "Window Width.PNG");

previewBox.Image = System.Drawing.Image.FromFile(fullPath);

关于c# - AutoCAD 插件无法定位资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27304259/

相关文章:

c# - 如何格式化单元格文本标签的某些单词

c# - ASP.net Web 应用程序(非 MVC): Accessing Google GoogleWebAuthorizationBroker. AuthorizeAsync 返回拒绝访问错误

c# - ReadToEndAsync 是阻塞的,如何让它异步运行?

c# - 复杂对象图的快速哈希码

c# - AutoCAD resbuf 迁移

c# - 如何使用 C#.NET 在 AutoCAD 中以编程方式拉伸(stretch) block

c# - 从 C# Web 应用程序登录 SQL Server 失败

c# - 使用 PDFsharp 制作表格和图表

c# - 为什么我会收到 403?

c# - 在 C# 中将父类转换为子类