访问引用dll中的文件

时间:2017-11-17 01:06:05

标签: c# .net

我有一个名为ExampleLibrary1的c#类库项目,我必须在其中访问项目文件夹中的文本文件。我尝试了以下所有方法来获取目录路径。

string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string assemblyFolder1 = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string assemblyFolder2 = Assembly.GetExecutingAssembly().CodeBase;
string assemblyFolder3 = Directory.GetCurrentDirectory();

我在consoleapplication1中引用dll并调用访问文本文件的代码。以上所有方法都给出了以下输出,无法访问该文件。

C:\Users\Desktop\ConsoleApplication1\ConsoleApplication1\bin\x64\Debug
C:\Users\Desktop\ConsoleApplication1\ConsoleApplication1\bin\x64\Debug
file:///C:/Users/Desktop/ConsoleApplication1/ConsoleApplication1/bin/x64/Debug/ExampleLibrary1.DLL
C:\Users\shrallap\Desktop\ConsoleApplication1\ConsoleApplication1\bin\x64\Debug

我的要求是我必须在ExampleLibrary1代码中读取文件,脚本也在ExampleLibrary1中。但代码调用发生在ConsoleApplication1

1 个答案:

答案 0 :(得分:0)

如果我没有误解你的问题,你有一个文本文件,我们在ExampleLibrary1的项目文件夹中将其命名为“yourtextfile.bat”,在文件ExampleLibrary1.csproj所在的文件夹中

无法 从您的代码中访问它。项目文件夹是您在开发计算机上组织源代码的位置,在用户环境中,没有项目文件夹。

当然,你可以使用这样的相对路径来访问它

..\\..\\..\\..\\ExampleLibrary1\\yourtextfile.bat

但它只适用于调试。

你必须将文本文件复制到build的输出文件夹,然后它将与dll / exe是同一个文件夹,你可以访问它而不用担心它的实际路径,只需使用相对路径“yourtextfile.bat “访问它。

在.NET中,相对路径在运行时相对于Environment.CurrentDirectory,如果双击以启动exe,通常是exe所在的文件夹。它与项目文件夹无关。

相关问题