DLL 中 File.Open() 的相对路径

Relative Paths of File.Open() in a DLL

我正在开发 SolidWorks 插件 (DLL)。它取决于几个文件(sqlite 数据库、草图等)。安装插件只需用SolidWorks打开DLL即可。

在 DLL 中有一些例程调用 File.Open() 一些我将通过相对路径引用的资源文件。目录。层次结构看起来像:

Plugin/
    plugin.dll
    Sketches/
        various.sldprt
    otherfile.db
    otherdeps.txt
    ...

根目录在哪里。插件可以在系统的任何地方。 SolidWorks 可以使用“打开文件对话框”轻松加载该插件。问题是,一旦我加载了 DLL,任何使用相对路径调用 File.Open()(例如 File.Open("Sketches/various.sldprt"))都将不起作用,因为它是相对于目录的。 SLDWORKS.exe(SW 安装目录)所在的位置而不是目录。的动态链接库。这意味着我必须将我所有的资源文件放在 SolidWorks 安装目录中,我想避免这种情况。这可能吗?

您可以做的是在调用 File.Open() 之前将插件文件夹作为前缀添加到任何本地路径。 Addin 文件夹可以获取为:

string path = System.IO.Path.GetDirectoryName( 
      System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase );