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 );
我正在开发 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 );