这更像是“架构”,而不是“语言”问题。
我的.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(右键单击/添加/新建文件夹)
创建的答案 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