当我尝试使用使用企业库缓存块的代码时,我收到以下错误:
“cachingConfiguration”部分在提供的配置源中不可用。
该部分在我的app.config文件中,用于该特定程序集。如果我将文件复制到使用上述代码的单元测试程序集中,一切正常。有什么方法可以强制它使用引用库中存在的app配置,所以我不需要在每个使用它的程序集中复制它吗?
答案 0 :(得分:2)
是
选择一个app.config文件作为主配置文件(一个很好的选择将是主应用程序可执行文件的项目中的一个。)
现在转到您的其他项目(fx。单元测试项目)。右键单击并选择“添加现有项”。指向主app.config文件并使用“As link”选项添加 :
Add as link http://blog.codevelop.dk/pics/AddAsLink.png
现在您只需要管理一个app.config文件,其他项目将“引用”此文件。
选项2:如果您不想控制Enterprise Library用于缓存配置的配置文件,请使用:
var fileSource = new FileConfigurationSource(configFilePath);
var factory = new CacheManagerFactory(fileSource);
ICacheManager manager = factory.CreateDefault();
答案 1 :(得分:1)
您在IDE中看到的dll配置文件(如果您使用设计器添加设置等)主要是为了方便起见。运行时不会查找它;它想要yourexename.config
的文件。 某些组件提供了指定单独的配置文件路径的功能 - 我不知道这是否适用于entlib。
或者,如果您要生成自己的AppDomain
,则可以指定配置文件路径。最后,一些配置部分可以从其他文件中引用,而不是完全使用该文件(参见configSource
here) - 但一般(特别是对于测试)它是更容易将配置部分复制到顶级应用程序的配置文件(在这种情况下是单元测试的配置文件)。