0

它更多的是“架构”而不是“语言”问题。

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

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

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

但:

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

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

4

1 回答 1

2

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

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

因此,您将需要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
于 2012-07-21T21:15:00.800 回答