2014-12-01 135 views
0

我正在开发一个.NET Framework 4.5.1的C#库,以便在Windows 8.1桌面应用程序中使用它。在类库中获取当前目录

这个库项目里面我有一个JSON文件,我想加载它。首先,我试图让当前目录是:

string currentDir = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); 

但是,我有测试,并Assembly.GetEntryAssembly()为空。

也许,我可以使用资源文件而不是JSON文件。

这是方法:

private void LoadData() 
{ 
    string currentDir = 
     Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); 

    string file = 
     Path.Combine(currentDir, cardsDir, cardsFile); 

    string json = 
     File.ReadAllText(file); 

    Deck = JsonConvert.DeserializeObject<Card[]>(json); 
} 

任何想法?有更好的方法吗?我如何获得当前目录?

回答

1

试试这个

Environment.CurrentDirectory 

这将返回应用程序的当前工作目录。现在你可以访问任何相对的文件到您的应用程序

string currentDir = Path.GetDirectoryName(Environment.CurrentDirectory); 
+0

我认为这将产生作为他的第一线相同的结果,在'串currentDir ' – MethodMan 2014-12-01 17:35:05

+0

谢谢,'Environment.CurrentDirectory'返回当前目录。 – VansFannel 2014-12-01 17:41:43

+0

不客气@VansFannel – 2014-12-01 17:42:38

0

讲究的是“Environment.CurrentDirectory” 不一定返回包含应用程序文件的目录。

它取决于您从何处开始应用程序。

例如,如果exe文件位于C:\ User \ ProgramName \ prog.exe但您从cmd启动应用程序,例如:“C:> C:\ User \ ProgramName \ prog.exe”。

'Environment.CurrentDirectory' 的结果将是 'C:\' 而不是 'C:\用户\ ProgramName中'

此外,它发生在快捷方式奥斯陆。

看看:http://oi60.tinypic.com/29eoylf.jpg

你看到的开端?它将是'Environment.CurrentDirectory'的结果,因为应用程序是从那里启动的。

anoter解决办法是,它运行的应用程序

像这样装配的位置:

typeof(Program).Assembly.Location