从另一个项目读取时,应用程序设置值是默认值
Application settings values are default when read from another project
我有 2 个项目。我正在尝试从项目 A 中获取一些用户范围的应用程序设置并从项目 B 中读取它们。为此,我创建了以下 class(在项目 A 中):
public class GeneralSettings
{
public string strLogFilesPath {get; private set;}
public GeneralSettings()
{
this.strLogFilesPath = GSN_PrestaBiz_UserUI_VS2013.Properties.Settings.Default.PathLogFiles;
}
}
然后我实例化项目 B 中的 class:
GSN_PrestaBiz_UserUI_VS2013.GeneralSettings ps = new GSN_PrestaBiz_UserUI_VS2013.GeneralSettings();
但出于某种原因,我每次都只获取类型的默认值,在本例中(字符串)它是“”,对于我在另一个类似 class 中的布尔值,它是 "false" .
但我知道这些不是设置的值。我尝试从项目 A(设置所属的同一项目)中实例化相同的 class 并且它起作用了,值是正确的,而不仅仅是默认值。
我做错了什么?
"project" 的正确术语实际上是 assembly 所以我在提到 "project" 时会使用它。
ConfigurationManager
与您尝试使用它的方式不同。这些文件不是针对特定程序集 hardcoded/locked,而是针对特定 executable.config 和 user.config。
从另一个程序集检索设置时,ConfigurationManager
真正寻找的是当前执行上下文的用户。config/exe.config 文件,但在另一个程序集的命名空间下。
这就是为什么当您在运行时使用 ConfigurationManager
查看一个程序集的配置时,设置存在但在另一个可执行文件的运行时中却不存在。
我有 2 个项目。我正在尝试从项目 A 中获取一些用户范围的应用程序设置并从项目 B 中读取它们。为此,我创建了以下 class(在项目 A 中):
public class GeneralSettings
{
public string strLogFilesPath {get; private set;}
public GeneralSettings()
{
this.strLogFilesPath = GSN_PrestaBiz_UserUI_VS2013.Properties.Settings.Default.PathLogFiles;
}
}
然后我实例化项目 B 中的 class:
GSN_PrestaBiz_UserUI_VS2013.GeneralSettings ps = new GSN_PrestaBiz_UserUI_VS2013.GeneralSettings();
但出于某种原因,我每次都只获取类型的默认值,在本例中(字符串)它是“”,对于我在另一个类似 class 中的布尔值,它是 "false" .
但我知道这些不是设置的值。我尝试从项目 A(设置所属的同一项目)中实例化相同的 class 并且它起作用了,值是正确的,而不仅仅是默认值。
我做错了什么?
"project" 的正确术语实际上是 assembly 所以我在提到 "project" 时会使用它。
ConfigurationManager
与您尝试使用它的方式不同。这些文件不是针对特定程序集 hardcoded/locked,而是针对特定 executable.config 和 user.config。
从另一个程序集检索设置时,ConfigurationManager
真正寻找的是当前执行上下文的用户。config/exe.config 文件,但在另一个程序集的命名空间下。
这就是为什么当您在运行时使用 ConfigurationManager
查看一个程序集的配置时,设置存在但在另一个可执行文件的运行时中却不存在。