【问题标题】:c# properties/settings not defined after changing project name and namespace更改项目名称和命名空间后未定义 c# 属性/设置
【发布时间】:2015-07-29 10:44:54
【问题描述】:

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

我想改变这一点(同时以更多的 OOP 方式重新构建应用程序以使其更灵活,并能够重用代码),所以将名称更改为 email2case

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

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

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

那个编译器的错误是:

“email2case.email2case”不包含“属性”的定义

这是一个类从全局设置中读取的方式:

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

那个编译器的错误是:

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

我有一种预感,这个问题是由 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 中的定义方式吗?

【问题讨论】:

  • 你在项目中看到一个 .settings 文件吗?当你在 Visual Studio 中转到 Project -> Properties -> Settings 时你看到了什么?
  • @gideon:结果证明,在正确更改全局命名空间、保存、重建后,属性的正确引用是 Properties. 而不是 email2case.Properties. ...你认为我应该添加我的自己的答案,还是关闭/删除问题?
  • 你应该回答你的问题,添加细节并接受答案(系统将在两天后允许)
  • @gideon:谢谢我已经添加了,请你看看它是否有意义并且对其他人有帮助?
  • 是的 :) 干得好!

标签: c# .net winforms projects-and-solutions


【解决方案1】:

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

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

解决办法是

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

【讨论】:

    【解决方案2】:

    将光标放在您要更改的位置(命名空间、方法),然后按 F2,然后将打开一个新窗口并按照说明进行操作

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

    【讨论】:

    • 这是一个有用的提示,但请您花一些时间添加一些有关它如何解决问题以及问题所在的更多信息 - 然后我可以投票。一句话就应该是一个评论
    【解决方案3】:

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

    在我的情况下,问题是 %LocalAppData%\&lt;old namespace&gt; 存在于旧外壳中,即使在开发过程中,设置也是从该位置读取的。我删除了目录,一切恢复正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 2019-01-31
      • 1970-01-01
      • 2012-05-29
      相关资源
      最近更新 更多