这是我在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
。重建。
关闭VS2015,然后重新启动VS2015。
在
EncSettings.settings.cs
中,单击type dropdown menu
,然后选择Browse
。单击
EncLib
,VS2015崩溃。我认为这意味着VS2015已将
Channel
更新为EncoderChannel
,但是由于某些原因,VS2015在尝试提供更新时会崩溃。更新3:
我已经尝试了多种方法来修复崩溃,但是我无法成功。我不得不回滚到源代码管理的上一次提交。避免执行更新2中提到的步骤。
最佳答案
经过一番尝试,我发现自己是一个简单的解决方案:
封闭的解决方案。
转到项目目录。
用文本编辑器打开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
。做完了!