C# 有没有一种干净的方法可以从运行在WSL下的dotnet核心应用程序访问AppData?

C# 有没有一种干净的方法可以从运行在WSL下的dotnet核心应用程序访问AppData?,c#,.net-core,windows-subsystem-for-linux,C#,.net Core,Windows Subsystem For Linux,我有一个dotnet core控制台应用程序,打算在同一台机器上从windows(powershell/DOS)和WSL shell运行。我希望应用程序共享设置,而不考虑环境 在Windows下,可以使用 Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)。 但是,在WSL下运行时,此调用返回一个空路径 在WSL下,我能想到的“最好”方法是使用类似 var user = Environment.Get

我有一个dotnet core控制台应用程序,打算在同一台机器上从windows(powershell/DOS)和WSL shell运行。我希望应用程序共享设置,而不考虑环境

在Windows下,可以使用

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)。

但是,在WSL下运行时,此调用返回一个空路径

在WSL下,我能想到的“最好”方法是使用类似

var user = Environment.GetEnvironmentVariable("LOGNAME");
var appdatalocal = $"/mnt/c/users/{user}/AppData/Local"
 

这比我真正喜欢的要脆弱得多。有更好的方法吗?

您可能应该调用
wslpath
wslvar
,我不认为它与.NET Core有绑定,但您可以四处看看。谢谢@fredrik,这是一个非常有用的链接,如果我无法在应用程序中直接工作,它看起来是一个合理的回退。wslpath“$(wslvar LOCALAPPDATA)”似乎返回了所需的路径。您可能应该调用
wslpath
wslvar
,我认为它与.NET Core没有绑定,但是你可以四处看看。谢谢@fredrik,这是一个非常有用的链接,如果我不能在应用程序中直接运行某些东西,这看起来是一个合理的退路。wslpath“$(wslvar LOCALAPPDATA)”将返回所需的路径。