.net WebReference甚至在库程序集项目中创建App.config

.net WebReference甚至在库程序集项目中创建App.config,.net,web-services,configuration,.net,Web Services,Configuration,为什么向库程序集项目添加web引用会为该项目创建app.config文件?它不会在运行时使用,对吗?-由于每个主机进程(可执行文件)只能有一个根配置文件,所以在编译过程中,只有可执行文件将其app.configs重命名为“projectName.exe.config”,并部署到输出文件夹 在任何情况下,只有applicationSettings部分有一个配置设置,其中包含指向web服务的url,通常由ops使用单独的配置设置动态设置 另外,如果一个主机进程有多个具有web引用的从属库程序集,那又

为什么向库程序集项目添加web引用会为该项目创建app.config文件?它不会在运行时使用,对吗?-由于每个主机进程(可执行文件)只能有一个根配置文件,所以在编译过程中,只有可执行文件将其app.configs重命名为“projectName.exe.config”,并部署到输出文件夹

在任何情况下,只有applicationSettings部分有一个配置设置,其中包含指向web服务的url,通常由ops使用单独的配置设置动态设置

另外,如果一个主机进程有多个具有web引用的从属库程序集,那又有什么意义呢?将使用多个设置中的哪一个(每个从属库程序集一个)


无论如何,我想去掉这些app.configs,以避免配置系统在运行时找不到设置时出现异常,但我不清楚它为什么会出现在这里。。。我遗漏了什么吗?

您已经回答了您的问题-添加app.config是因为web引用需要将服务的URL存储在某个位置。它最好存储在配置文件中,而不是硬编码到*.cs文件中,不是吗

如果从主应用程序使用了所有从属程序集,则只会使用主应用程序的app.config(重命名为mainapp.exe.config)-从属程序集将使用主应用程序的配置文件。通过添加web引用创建的app.config仅作为一个位置存在,您可以在其中查看需要进入主app.config的设置

如果您有一个单独的地方配置所有webservice URL(例如数据库表或其他),您可以丢弃生成的app.config,这没有问题


Marc

将web引用标记为静态(右键单击引用->属性->URL行为)。然后url将存储在reference.cs文件而不是.config文件中


当一个具有自己app.config的程序集被加载到一个具有单独.config文件的应用程序中时,我相信它会以与machine.config和web.config合并的方式合并.config文件(但在这一点上我可能是错的)。

首先,将URL硬编码到代码文件中似乎是一个非常糟糕的主意。另外,.NET程序集通常(在没有用户发明的情况下)根本不会加载自己的app.config文件。是的,我同意这是个坏主意,但OP要求这样做。至于加载配置设置,在程序集中调用configurationmanager.x的任何操作都会加载该程序集的app.config,这也可能包括非用户发起的调用!我真的不在乎它放在哪里。。在运行时,我无论如何都不会使用它(我在代码中根据单独的自定义配置节设置url),我只是不希望运行时被编码为“查找”不存在的配置节,并在找不到时生成异常…在我的代码中,我使用web服务对象的Url属性根据我自己的自定义配置设置动态设置Url。。。将URL行为属性设置为static不会阻止我这样做,是吗?