Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用导入的C#项目的应用程序配置_C#_Visual Studio 2010_App Config - Fatal编程技术网

如何使用导入的C#项目的应用程序配置

如何使用导入的C#项目的应用程序配置,c#,visual-studio-2010,app-config,C#,Visual Studio 2010,App Config,我正在使用VisualStudio2010和C#4.0。我有一个向Web服务公开接口的项目。它有一个app.config,用于定义Web服务的绑定。我想将此项目作为库公开给其他客户端使用 但是,当我尝试在客户机项目(比如控制台应用程序)中导入此库项目时,会出现一个错误,因为它找不到任何与webservice关联的配置文件 有没有一种方法可以在我的库项目中使用app.config,这样我的客户就可以使用它,而不必定义他们自己的配置文件?稍微更改一下库项目如何: 将库项目生成操作中的app.conf

我正在使用VisualStudio2010和C#4.0。我有一个向Web服务公开接口的项目。它有一个app.config,用于定义Web服务的绑定。我想将此项目作为库公开给其他客户端使用

但是,当我尝试在客户机项目(比如控制台应用程序)中导入此库项目时,会出现一个错误,因为它找不到任何与webservice关联的配置文件


有没有一种方法可以在我的库项目中使用app.config,这样我的客户就可以使用它,而不必定义他们自己的配置文件?

稍微更改一下库项目如何:

  • 将库项目生成操作中的app.config更改为“嵌入式资源”
  • 在读取配置时更改代码,检查配置是否存在,如果不存在,请将app.config从嵌入式资源提取到当前文件夹,然后使用类似的方法读取它

  • 在此之后,任何使用此库的项目都应该能够不用担心这些设置。

    首先创建一个实用函数,如下所示。此函数应该位于可以从web服务(当然还有主项目)调用的库或类中。最好在web服务中添加对此库的引用

        public static string GetAppConfigValue(string key)
        {
            return ConfigurationManager.AppSettings[key] ?? GetAppConfigValue(GetAppConfigFileName(), key);
        }
    
        private static string GetAppConfigValue(string appConfigFileName, string key)
        {
            ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
            fileMap.ExeConfigFilename = appConfigFileName;
            Configuration appConfig = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
            return appConfig.AppSettings.Settings[key].Value;
        }
    

    现在,如果可以从主项目调用
    GetAppConfigValue(string)
    ,它将返回缓存的app.config的值,因为它是自己的配置文件。当公共函数返回映射的配置设置时,您还可以从web服务项目调用该函数。这里棘手的部分是正确提供配置文件的完整路径

    问题是,如果您没有足够的权限写入该文件夹,它将不起作用,这是非管理员用户Program File的情况->将文件写入AppData并从那里读取。顺便说一句,这重复了很多次!