更改项目名称和名称空间后未定义c#properties/settings

Our*_*nas 3 .net c# projects-and-solutions winforms

我正在更新几年前构建的旧应用程序,全局命名空间和project.cs文件以及主窗体都被命名为 email2case_winForm

我想改变它(除了以更多的OOP方式重建应用程序以使其更灵活,并且能够重用代码),因此将名称更改为 email2case

但是现在我在编译时遇到了问题,因为在阅读项目的设置和属性时,找不到这些成员.

这是我试图用来读取属性的代码示例.设置:

XElement x = XElement.Load(email2case.Properties.Settings.Default.e2cConfigFile);
Run Code Online (Sandbox Code Playgroud)

并且该编译器的错误是:

'email2case.email2case'不包含'属性'的定义

以下是一个类如何从全局设置中读取:

this.Url = global::email2case.Settings.Default.email2case_sforce_SforceService;
Run Code Online (Sandbox Code Playgroud)

并且该编译器的错误是:

名称空间"email2case"中不存在类型或命名空间名称"设置"(您是否缺少程序集引用?)

我有一种预感,问题是由定义引起的app.Config,这里是:

<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <section name="email2case.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
            <section name="email2case.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
        </sectionGroup>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="email2case.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <applicationSettings>
      <email2case.Properties.Settings>
        <setting name="email2case_sforce_SforceService" serializeAs="String">
          <value>https://login.salesforce.com/servi...</value>
        </setting>
        <setting name="e2cConfigFile" serializeAs="String">
          <value>C:\email2case\data\e2cConfig.xml</value>
        </setting>
      </email2case.Properties.Settings>
      <email2case.Properties.Settings>
        <setting name="email2case_sforce_SforceService" serializeAs="String">
          <value>https://login.salesforce.com/serv...</value>
        </setting>
      </email2case.Properties.Settings>
    </applicationSettings>
    <system.serviceModel>
        <bindings/>
        <client/>
    </system.serviceModel>
    <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup><userSettings>
        <email2case.email2case.Properties.Settings>
            <setting name="enableEWSTrace" serializeAs="String">
                <value>False</value>
            </setting>
            <setting name="attachmentsPathLocal" serializeAs="String">
                <value>C:\email2case\temp\</value>
            </setting>
            <setting name="eTracePath" serializeAs="String">
                <value>C:\email2case\Trace\</value>
            </setting>
            <setting name="ewsTraceKeepDays" serializeAs="String">
                <value>1</value>
            </setting>
        </email2case.email2case.Properties.Settings>
    </userSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我不想在不知道正确的方法的情况下进行编辑,那么我应该使用什么代码来引用我的属性和设置?

或者我应该改变app.config中定义它们的方式?

Our*_*nas 8

问题是由2个问题引起的:

  1. 当您更改命名空间时,需要在"应用程序设置"中完成,而不是仅仅进入代码并替换old namespacenew namespace
  2. 在错误地更改代码中的命名空间后,代码中的命名空间与应用程序设置和app.config不同步

解决方案是

  1. 在适当的位置更改命名空间(在"项目属性">"应用程序">"默认命名空间"中
  2. 清理,重建,保存项目
  3. 使用正确的代码在代码中引用设置和属性.
    • 在我的情况下,这是,Properties.而不是email2case.Properties.......