我在阅读JSON文件时遇到问题。将文件插入到解决方案资源管理器中,并将“构建操作”设置为“内容”并将“复制属性我希望该文件应该可以从LocalFolder中的应用程序访问。
Stream localFolder = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync("sources.json");
string json;
using (StreamReader streamReader = new StreamReader(localFolder))
{
json = streamReader.ReadToEnd();
}
return JsonConvert.DeserializeObject<List<SourceDefinition>>(json);
它返回的错误是:
错误:系统找不到指定的文件。 (例外 HRESULT:0x80070002)
答案 0 :(得分:1)
尝试File.OpenRead - 您可能会尝试从AppData打开,这是thr userprofile中的一个特殊路径(在这种情况下为%localappdata%)
答案 1 :(得分:1)
因此ApplicationData.Current.LocalFolder指向users \ XXXXX \ Local \ Packages \ YYYYYY \ LocalState,其中XXXX是用户,YYYY是应用程序的GUID。据我所知,项目资源管理器中没有文件夹实际指向该位置。您可以尝试使用Windows.ApplicationModel.Package.Current。 InstalledLocation.Path将使您可以访问运行应用程序的bin。希望这会有所帮助。
答案 2 :(得分:0)
appsettings.json File
"Mapping": {
"Column1": {
"ExcelColumnName": "DISTRIBUTOR UNIQUE ID",
"DbFieldName": "vehicle_dealer_code",
"IsRequired": "true",
"DataType": ""
},
"Column1": {
"ExcelColumnName": "FACTORY ORDER NUMBER",
"DbFieldName": "vehicle_data02",
"IsRequired": "true",
"DataType": ""
}
public static T InitOptions<T>(string name, string section) where T : new()
{
var config = new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory)
.AddJsonFile(name, true, true)
.Build();
return config.GetSection(section).Get<T>();
}
public class Config
{
public Mapping Column1 { get; set; }
public Mapping Column2 { get; set; }
}
public class Mapping
{
public string ExcelColumnName { get; set; }
public string DbFieldName { get; set; }
public bool IsRequired { get; set; }
public string DataType { get; set; }
}
var MappedData = InitOptions<Config>("appsettings.json", "Mapping");