c#属性/设置在更改项目名称和命名空间后未定义

本文关键字:命名空间 未定义 项目 属性 设置 | 更新日期: 2023-09-27 18:05:14

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

我想改变这一点(同时以更面向对象的方式重建应用程序,使其更灵活,并能够重用代码),因此将名称更改为email2case

但是现在我在编译时遇到了麻烦,因为在读取项目的设置和属性时,无法找到这些成员。

这里是我试图用来读取属性的代码的一个例子。设置:

XElement x = XElement.Load(email2case.Properties.Settings.Default.e2cConfigFile);

的编译错误是:

email2case。email2case'不包含'Properties'的定义

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

this.Url = global::email2case.Settings.Default.email2case_sforce_SforceService;

的编译错误是:

类型或名称空间名称'Settings'在名称空间'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>

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

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

c#属性/设置在更改项目名称和命名空间后未定义

这个问题是由两个问题引起的:

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

解决方案是

  1. 在适当的位置更改命名空间(在项目属性>应用程序>默认命名空间
  2. 中)
  3. 清理,重建,保存项目
    • 如果有必要,按照本SO帖子中的说明重建app.config文件:在visual studio中重建app.config ?
  4. 在代码中使用正确的代码引用设置和属性。
    • 在我的情况下,这是Properties.而不是email2case.Properties.

将光标放在想要更改的位置(名称空间,方法),然后按F2键,然后将打开一个新窗口,只需按照说明

手动重命名方法或命名空间会带来更多的错误,因为项目已经构建,所以当我们运行一个项目时,visual studio会自动生成设计器代码,并需要对该文件进行更改

我遇到了同样的问题(在改变了名称空间的大小写之后),阅读下面的内容:https://stackoverrun.com/de/q/244400

在我的例子中,问题是%LocalAppData%'<old namespace>存在于旧的外壳中,即使在开发过程中,设置也是从那个位置读取的。我删除了目录,一切都恢复正常。