你好,我有一个带有一个文件夹的Dll,我想知道如何从我的Dll中的C#类访问该文件夹。
我尝试过:
AppDomain.CurrentDomain.BaseDirectory + @"/tesseract-master.1153";
但是它只会获取我的项目文件夹,而不会获取我的dll。
我不知道这是否对,希望有人能帮助我,谢谢。
编辑:我需要该文件夹,以便我的DLL可以工作。将文件夹“附加”到我的DLL的正确方法是什么?
答案 0 :(得分:1)
您在DLL中没有文件夹。 A .Net assembly (DLL) only contains:
您可能想使用的是资源,即将文件从Visual Studio项目结构嵌入到输出程序集中。可以并且将使用类似于文件夹的名称空间来组织它们。您可以在单个文件的文件属性中选择 BuildAction Embedded Resource
(选择文件,然后单击R单击>属性)。这些资源可以使用
Assembly.GetExecutingAssembly().GetManifestResourceStream("TessDll.tesseract-master.1153.your-file-here")`.
我不确定文件夹名称中的.
,也许您需要避免这种情况。如果要将文件夹的所有内容嵌入为资源,则需要按照here所述编辑.csproj文件。
我建议下载 ILSpy -它是您可以打开.net程序集并查看其中内容的工具。
或者,请注意,您无需将资源嵌入到程序集中即可在bin
输出文件夹中使用它们。您只需在文件属性中将复制到输出目录属性设置为true
,然后使用您的原始方法AppDomain.CurrentDomain.BaseDirectory
访问文件。同样,您必须手动对每个文件执行此操作,但是也可以通过使用通配符编辑.csproj文件来对整个文件夹执行此操作:
<ItemGroup>
<Content Include=".\tesseract-master.1153\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>