DLL中

时间:2017-08-15 08:12:00

标签: c# visual-studio dll plugins solidworks

我正在使用SolidWorks插件(DLL)。它取决于几个文件(sqlite DB,草图等)。要安装插件,您只需使用SolidWorks打开DLL。

在DLL中有一些例程,它们在我通过相对路径引用的许多资源文件上调用File.Open()。迪尔。层次结构看起来像:

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

根目录。该插件可以在系统的任何地方。 SolidWorks可以使用“打开文件”对话框轻松加载插件。问题是,一旦我加载DLL,任何具有相对路径的File.Open()(例如File.Open("Sketches/various.sldprt"))的调用都不会起作用,因为它与dir相关。其中SLDWORKS.exe(SW安装目录。)驻留而不是dir。的DLL。这意味着我必须将所有资源文件放在SolidWorks安装目录中,我希望避免使用。这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以执行的操作是在调用File.Open()之前将addin文件夹添加为任何本地路径的前缀。 Addin文件夹可以获得:

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