c# properties/settings 更改项目名称和命名空间后未定义
c# properties/settings not defined after changing project name and namespace
我正在更新一个几年前构建的旧应用程序,全局命名空间和 project.cs 文件以及主窗体都被命名为 email2case_winForm
我想更改此设置(同时以更多 OOP 方式重建应用程序以使其更灵活,并能够重用代码),因此将名称更改为 email2case
但是现在我编译遇到了问题,因为在读取项目的设置和属性时,找不到那些成员。
这是我试图用来阅读 properties.Settings:
的代码示例
XElement x = XElement.Load(email2case.Properties.Settings.Default.e2cConfigFile);
那个编译器的错误是:
'email2case.email2case' does not contain a definition for 'Properties'
以下是 class 从全局设置中读取的方式:
this.Url = global::email2case.Settings.Default.email2case_sforce_SforceService;
那个编译器的错误是:
The type or namespace name 'Settings' does not exist in the namespace 'email2case' (are you missing an assembly reference?)
我预感问题是由 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 中的定义方式吗?
将光标放在要更改的地方(名称空间,方法),然后按 F2 将打开一个新的 window,只需按照说明操作即可
手动重命名方法或命名空间会带来更多错误,因为项目已经构建,所以当我们 运行 项目 visual studio 自动生成设计器代码时,也需要更改该文件
该问题是由 2 个问题引起的:
- 更改命名空间时,需要在应用程序 设置 中完成,而不是直接进入代码并将
old namespace
替换为 new namespace
- 错误更改代码中的命名空间后,代码中的命名空间与应用程序设置不同步,app.config
解决方案是
- 在适当的位置更改命名空间(在项目属性 > 应用程序 > 默认命名空间中
- 清理、重建、保存项目
- 如有必要,按照此 SO post 中的说明重建 app.config 文件:Rebuilding app.config in visual studio?
- 使用正确的代码引用代码中的设置和属性。
- 在我的例子中,这是
Properties.
而不是 email2case.Properties.
...
我遇到了同样的问题(在更改命名空间的大小写之后),并阅读了以下内容:
https://stackoverrun.com/de/q/244400
在我的例子中,问题是 %LocalAppData%\<old namespace>
存在于旧外壳中,即使在开发过程中,设置也是从那个位置读取的。我删除了目录,一切恢复正常。
我正在更新一个几年前构建的旧应用程序,全局命名空间和 project.cs 文件以及主窗体都被命名为 email2case_winForm
我想更改此设置(同时以更多 OOP 方式重建应用程序以使其更灵活,并能够重用代码),因此将名称更改为 email2case
但是现在我编译遇到了问题,因为在读取项目的设置和属性时,找不到那些成员。
这是我试图用来阅读 properties.Settings:
的代码示例XElement x = XElement.Load(email2case.Properties.Settings.Default.e2cConfigFile);
那个编译器的错误是:
'email2case.email2case' does not contain a definition for 'Properties'
以下是 class 从全局设置中读取的方式:
this.Url = global::email2case.Settings.Default.email2case_sforce_SforceService;
那个编译器的错误是:
The type or namespace name 'Settings' does not exist in the namespace 'email2case' (are you missing an assembly reference?)
我预感问题是由 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 中的定义方式吗?
将光标放在要更改的地方(名称空间,方法),然后按 F2 将打开一个新的 window,只需按照说明操作即可
手动重命名方法或命名空间会带来更多错误,因为项目已经构建,所以当我们 运行 项目 visual studio 自动生成设计器代码时,也需要更改该文件
该问题是由 2 个问题引起的:
- 更改命名空间时,需要在应用程序 设置 中完成,而不是直接进入代码并将
old namespace
替换为new namespace
- 错误更改代码中的命名空间后,代码中的命名空间与应用程序设置不同步,app.config
解决方案是
- 在适当的位置更改命名空间(在项目属性 > 应用程序 > 默认命名空间中
- 清理、重建、保存项目
- 如有必要,按照此 SO post 中的说明重建 app.config 文件:Rebuilding app.config in visual studio?
- 使用正确的代码引用代码中的设置和属性。
- 在我的例子中,这是
Properties.
而不是email2case.Properties.
...
- 在我的例子中,这是
我遇到了同样的问题(在更改命名空间的大小写之后),并阅读了以下内容: https://stackoverrun.com/de/q/244400
在我的例子中,问题是 %LocalAppData%\<old namespace>
存在于旧外壳中,即使在开发过程中,设置也是从那个位置读取的。我删除了目录,一切恢复正常。