存储C#库中目录的路径

时间:2012-07-21 21:00:26

标签: c# .net architecture resources

这更像是“架构”,而不是“语言”问题。

我的.Net解决方案中有一个类库,它使用与应用程序一起部署的目录中的图像生成一些东西。用户必须能够轻松添加新图像,因此我无法将它们放到资源中。

此目录附加到此类库。有没有办法得到它的路径?调试的AppDomain.CurrentDomain.BaseDirectory返回/ bin / debug /,当然不是正确的。

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

BUT:

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

如何使这条路径具有普遍性?该目录是从Visual Studio(右键单击/添加/新建文件夹)

创建的

1 个答案:

答案 0 :(得分:2)

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

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

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

您可以在此处详细了解这些内容:

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