以下是EncLib
命名空间中的枚举示例:
public enum Channel { X = 0, Y }
在同一个解决方案中,我有另一个名称空间StmLib
引用EncLib
,并且在EncSettings.settings中有一个类型为Channel
的变量。
示例文件结构如下所示:
现在,如果我将枚举重命名为EncoderChannel
:
public enum EncoderChannel { X = 0, Y }
更改未反映在EncSettings.settings中。在下面显示的图片的左侧是对象浏览器中的EncLib
。
在右侧是单击EncSettings.settings
- >从type dropdown menu
打开的对话框。 Browse...
- > EncLib
:
我尝试过Rebuild和Clean-> Build,结果是一样的。
我也很清楚我可以打开EncSettings.Designer.cs
文件并将Channel
更改为EncoderChannel
,但这不会对设置文件进行任何更改。这意味着每次保存EncSettings.settings
时,我都必须进行此编辑,因为保存将更新设计器文件以匹配设置文件中显示的内容。
任何建议和帮助表示赞赏。
修改
已上传对象浏览器和设置页面中EncLib
的并排视图。
如您所见,在设置页面中,名为EncoderChannel
的变量的类型为Channel
,而不是预期的EncoderChannel
。
更新1:
我尝试删除EncLib
引用并重新引用它。这并没有解决问题。
更新2: 我已经成功地崩溃了VS2015,这似乎给了我一个提示,这是一个错误,而不是我在这里错过了一些步骤。 VS2015崩溃的程序:
EncSettings.Designer.cs
中,将Channel
更改为EncoderChannel
。EncSettings.settings.cs
中,点击type dropdown menu
,选择Browse
。EncLib
和VS2015崩溃。我认为这意味着VS2015已将Channel
更新为EncoderChannel
,但出于某种原因,VS2015在尝试提供更新时崩溃。
UPDATE3: 我已经尝试了很多方法来修复崩溃,但我无法成功。我不得不从源代码控制回滚到先前的提交。避免遵循Update 2中提到的步骤。
答案 0 :(得分:1)
经过一番尝试,我发现自己是一个简单的解决方案:
EncSettings.settings
。更改以下行:
<Setting Name="EncoderChannel" Type="EncLib.Channel" Scope="User">
<Value Profile="(Default)">Y</Value>
到
<Setting Name="EncoderChannel" Type="EncLib.EncoderChannel" Scope="User">
<Value Profile="(Default)">Y</Value>
使用文本编辑器打开EncSettings.Designer.cs
。
更改以下行:
public global::EncLib.Channel EncoderChannel {
get {
return ((global::EncLib.Channel)(this["EncoderChannel"]));
}
set {
this["EncoderChannel"] = value;
}
}
要
public global::EncLib.EncoderChannel EncoderChannel {
get {
return ((global::EncLib.EncoderChannel)(this["EncoderChannel"]));
}
set {
this["EncoderChannel"] = value;
}
}
使用文本编辑器打开app.config并检查下面的行是否退出:
<setting name="EncoderChannel" serializeAs="String">
<value>Y</value>
</setting>
完成!
<强>更新强>
我刚刚找到了更整洁的解决方案:
EncSettings.settings
中,将变量的类型更改为其他内容,例如string
。EncoderChannel
而不是Channel
。将string
更改为EncoderChannel
。完成!