File.Exist(...)方法返回false

时间:2012-01-16 08:55:44

标签: .net wpf vb.net app-config skinning

我正在研究这个.Net / WPF项目。

我正在尝试让方法在应用之前检查皮肤文件是否存在。我觉得我的地址格式化我错了......有什么想法吗?

Dim lobjSPEConfigService As SPEConfigurationService = New SPEConfigurationService
Dim lobjSkinFilePath As String = CStr(lobjSPEConfigService.GetApplicationSetting("SkinFileLocation", GetType(String)))

If String.IsNullOrEmpty(lobjSkinFilePath) Then
    lobjSkinFilePath = "/SPE.Infrastructure.UI/Application/Resources/Skins/LightSkin"
Else
    Dim lblnFileExist = File.Exists(lobjSkinFilePath)
    If lblnFileExist = False Then
        lobjSkinFilePath = "/SPE.Infrastructure/SPE.Infrastructure.UI/Application/Resources/Skins/LightSkin"
    End If
End If

正在引用该项目的文件...

2 个答案:

答案 0 :(得分:2)

如果您的文件名和路径正确(不确定我没有看到您的项目),那么我唯一看到的是文件扩展名。我假设它是.xaml

如果您要加载任何资源,则必须使用WPF Pack URI。

一些例子:

绝对路径

"pack://application:,,,/ResourceFile.xaml"
"pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml"

相对路径

"/ResourceFile.xaml"
"/ReferencedAssembly;component/ResourceFile.xaml" 

还要删除你的第一个else语句...如果你的文件名为空,你就不会做任何事情。

答案 1 :(得分:1)

File.Exists()在磁盘上搜索。如果它返回False,则磁盘上不存在该文件。

File.Exists正在寻找取决于CStr(lobjSPEConfigService.GetApplicationSetting("SkinFileLocation", GetType(String)))

检查配置文件中的值。

确保路径确实存在且应用程序有足够的权限来访问/找到它。

修改

查找内部(装配)资源use the ResourceManager