您好我在使用webconfig中的appsettings指向一个单独的配置文件,唯一的问题是配置文件保存在一个单独的项目中,这是否可以在一个单独的引用中引用一个app配置项目
答案 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参数允许您指定要将输出文件放入的确切位置。
因此,如果您在构建步骤之前将其放入两个项目中,则每个项目都将生成相同的配置副本。