0
我的WinForm程序保存了用戶設置的xml副本,我遇到的問題是將其重新加載回來。從XML中加載用戶設置並將其設置爲對象。未將對象設置爲對象實例
我已經從博客複製此代碼:Code Snippet
錯誤發生的歷史,其中發生在下面的代碼註釋。
無法導入設置。對象引用未設置爲對象的實例 。
[更新]我剛纔注意到,它運行在Visual Studio 2013程序時的實際工作,但是並沒有從Windows資源管理器運行時。
[Update2]我想是因爲這是我第一次從桌面運行這個,我是一個不同的用戶,我的用戶設置配置文件尚未創建,這是問題。
try{
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
// returns "[MyApplication].Properties.Settings";
string appSettingsXmlName = Properties.Settings.Default.Context["GroupName"].ToString();
// Open settings file as XML
var import = XDocument.Load(filename);
// Get the whole XML inside the settings node
var settings = import.XPathSelectElements("//" + appSettingsXmlName);
//***Error occurs in the following code***
config.GetSectionGroup("userSettings")
.Sections[appSettingsXmlName]
.SectionInformation
.SetRawXml(settings.Single().ToString());
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("userSettings");
appSettings.Reload();
}
catch (Exception ex)
{
MessageBox.Show("Could not import settings. " + ex.Message);
}
下面是XML文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="DropLib.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<DropLib.Properties.Settings>
<setting name="ORG_SETTINGS" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<string>ORG1-||-server1-||-Proj 94-||[email protected]|||-Server-|-Server-|-Folder$-|-http://server1/proj-|-c:\inetpub\wwwroot\proj\</string>
<string>ORG2-||-server2-||-Proj 94-||[email protected]|||-Server-|-Server-|-Folder$-|-http://server2/proj-|-c:\inetpub\wwwroot\proj\</string>
</ArrayOfString>
</value>
</setting>
</DropLib.Properties.Settings>
</userSettings>
</configuration>
我已經改變了這種解決方案一點,看來你至少必須初始化保存工作之前的設置之一。 – Hank