2

我的猜测是这个问题将属于“duh”的范畴,但是,我很困惑。

例如,在 Windows 窗体应用程序中使用配置文件时,可以在C:\Program files\CompanyName\ProductName\Application.exe.config中找到配置文件。但是,对于我正在开发的类库,在从 Visual Studio 安装它(与另一个项目串联)后,我在安装文件夹中看不到“ ClassLibrary.dll.config ”文件。即使我没有在任何地方看到该文件,从中检索数据也可以正常工作。另外,从类库中的方法运行以下代码会返回您期望的路径:C:\Program files\CompanyName\ProductName\ClassLibrary.dll.config

如果有人能阐明我在这里所缺少的东西,那真是太棒了。

public static string MyMethod()
{
Assembly assem = Assembly.GetExecutingAssembly();
Configuration config = ConfigurationManager.OpenExeConfiguration(assem.Location);

return "The assembly location was: " + assem.Location + Environment.NewLine +
"The config file path was: " + config.FilePath;

// Gives me "C:\Program files\CompanyName\ProductName\ClassLibrary.dll.config"

}
4

4 回答 4

3

在类库中,app.config 文件毫无用处。应用程序设置值存储在 Settings.settings 文件中并编译到 Settings.designer.cs 文件中。

如果您直接在 app.config 中修改应用程序设置之一的值,则不会影响运行应用程序时看到的设置值。您必须实际打开 Settings 编辑器,此时它会注意到 app.config 文件和 Settings.settings 文件之间的差异,并询问您是否希望它使用来自 app 的值更新您的 Settings.settings 文件.config。

于 2010-03-26T20:13:05.890 回答
2

取决于 .NET 的版本。在 .NET 4.0 之前,类库不能使用它们自己的 app.config 文件,除非您执行自定义操作来读取数据。在这些情况下,您应该让类库的初始化需要所有适当的数据并将其传入从您的消费类的配置(即最终您的 winform 的 app.config 文件)。

于 2010-03-26T19:39:52.897 回答
1

您的类库将使用调用它的可执行文件的配置文件。

于 2010-03-26T19:41:02.247 回答
0

您的默认值存储在 dll 中。

但是,假设您更改代码中的设置并保存它。下次存放在哪里?

在 WinXP 中查看:

C:\Documents and Settings\用户名\本地设置\应用程序数据\

或在 Windows Vista/7 中查看:

C:\Users\用户名\AppData\Local\

您将找到一个以您的应用程序命名的文件夹并深入到该文件夹​​,您将找到一个名为 user.config 的文件。

例如:

C:\Documents and Settings\username\Local Settings\Application Data\MyApp\myapp.exe_urlla1ii3sytrhx0adqtjnjuc24oacqpgu4\1.0.0.0\user.config

于 2010-03-26T20:41:02.620 回答