我的猜测是这个问题属于“duh”的范畴,但是,我很困惑。
在Windows Forms应用程序中使用配置文件时,可以在 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"
}
答案 0 :(得分:3)
在类库中,app.config文件非常无用。应用程序设置值存储在Settings.settings文件中,并编译到Settings.designer.cs文件中。
如果直接在app.config中修改某个应用程序设置的值,则不会影响运行应用程序时看到的设置值。你必须实际打开设置编辑器,此时它会注意到app.config文件和Settings.settings文件之间的区别,并询问你是否希望它使用来自app的值来更新你的Settings.settings文件的.config。
答案 1 :(得分:2)
取决于.NET的版本。在.NET 4.0之前,类库不能使用自己的app.config文件,除非您使用自定义内容来读取数据。在这些场景中,您应该让类库的初始化需要所有适当的数据并将其传递给从您的消费类的配置(即最终您的winform的app.config文件)。
答案 2 :(得分:1)
您的类库将使用调用它的可执行文件的配置文件。
答案 3 :(得分:0)
您的默认值存储在dll中。
但是,假设您更改了代码中的设置并保存。它下次存放在哪里?
在WinXP中查看:
C:\ Documents and Settings \ username \ Local Settings \ Application Data \
或在Windows Vista / 7中查看:
C:\ Users \ username \ AppData \ Local \
您将找到一个以您的应用程序命名的文件夹,并深入到该文件夹,您将找到一个名为user.config的文件。
例如:
C:\ Documents and Settings \ username \ Local Settings \ Application Data \ MyApp \ myapp.exe_urlla1ii3sytrhx0adqtjnjuc24oacqpgu4 \ 1.0.0.0 \ user.config