2012-07-21 169 views
0

它更“架构”,然后“语言”的问题。在C#库中的目录存储路径

我的.Net解决方案中有一个类库,它使用应用程序部署的目录中的图像生成一些内容。用户必须能够轻松添加新图像,所以我不能将它们放到资源中。

此目录附加到此类库。有什么方法可以找到路径吗?用于调试的AppDomain.CurrentDomain.BaseDirectory返回/ bin/debug /,这当然不正确。

即 - 我的应用程序安装到C:\ Program Files \ MyApp。所以,路径必须是“C:\ Program Files \ MyApp \ ImagesLib”。

但是:

我的应用程序从颠覆下载并保存到d:\我的项目\ MyApp的。因此,路径必须是“d:\ My Projects \ MyApp \ ImagesLib”。

如何使此路径具有通用性?该目录是从Visual Studio创建的(右键单击/添加/新建文件夹)

+0

你的问题是什么?我不明白你需要什么 – 2012-07-21 21:14:46

+0

所以你想要运行的路径? – 2012-07-21 21:18:17

回答

2

我认为您的架构需要重新思考。

在新的UAC世界中,您应该按照每个用户或每台计算机的基础写入特定位置。例如,如果安装到Program Files,在UAC下尝试写入安装文件夹可能会失败(取决于权限)。

因此,您将需要使用Environment.GetSpecialFolder()加上SpecialFolder enum。

你可以阅读更多有关这些位置:

http://msdn.microsoft.com/en-us/library/14tx8hby.aspx http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

例如,假设你只是想存储在每台计算机基础:

var base_data_folder = Environment.GetSpecialFolder(SpecialFolder.CommonApplicationData); 
var data_folder = Path.Combine(base_data_folder,"MyApplication"); 
var images_folder = Path.Combine(data_folder,"Images"); 

在我的Windows 7计算机这等同于:

C:\ProgramData\MyApplication\Images 
+0

我认为,你的版本将起作用。 – 2012-07-21 21:17:41

+0

这就是它的工作原理 - 用户从现成的图像中选择图像。然后他选择输出目录并点击“生成”,它就起作用了。它看起来很容易,但是我加载_the ready ones_(这将是只读的)有问题。 – 2012-07-21 21:19:20