web config <appsettings file =“在单独的项目中配置文件”> </appsettings>

时间:2010-07-12 10:30:25

标签: asp.net configgen

您好我在使用webconfig中的appsettings指向一个单独的配置文件,唯一的问题是配置文件保存在一个单独的项目中,这是否可以在一个单独的引用中引用一个app配置项目

1 个答案:

答案 0 :(得分:1)

最好不要在项目之外查看配置。请记住,配置文件是运行时文件,因此它们通常需要位于应用程序根目录的同一目录或子目录中。如果您指向根路径之外的文件夹,当有人决定移动您应用的物理位置并使用虚拟目录时,您可能会遇到麻烦。

如果你想拥有一个多个项目共有的配置文件,我发现ConfigGen是一个很好的解决方案。它是一个配置生成器,为不同的机器创建不同的(或在您的情况下是相同的)配置文件。它使用以下典型命令行,其中-s是一个设置xml文件,其中包含要注入各种输出文件的特定于环境的差异。 -t是一个模板文件,可以包含设置文件中设置的标记占位符。 -o是输出文件夹:

cfg.exe -s AppSettings.Config.Settings.xls -t AppSettings.Config.Template.xml -o Configs -ves "EmptyString"

在您的情况下,您可以将您的设置和模板文件放在共享位置,并添加预构建步骤以导入并生成本地AppSettings文件。这需要稍微不同的命令行。我已将它包装在您将放入csproj文件的BeforeBuild步骤中:

<Target Name="BeforeBuild">
    <Exec Command="cfg -s X:\sharedConfig\AppSettings.Config.Settings.xls 
     -t X:\sharedConfig\AppSettings.config.template.xml 
     -l -n $(ProjectDir)AppSettings.config" />
</Target>

在这种情况下,X:\ sharedconfg \是模板和设置的映射位置,并且有2个新参数,-l和-n。 -l表示只执行本地文件,因此它会在您的设置文件中查找与运行构建的计算机匹配的行。如果你没有这样的行,它将寻找一个名为“default”的行,这是你应该拥有的。

-n参数允许您指定要将输出文件放入的确切位置。

因此,如果您在构建步骤之前将其放入两个项目中,则每个项目都将生成相同的配置副本。