解决方案范围内的app.config/web.config?

11

我有一个解决方案,其中包括一个asp.net-mvc-2项目、一个Web服务、一个类库和三个常规桌面应用程序。目前,我需要将所有app.config设置从一个项目复制到另一个项目。如果我想做出更改,那将是一场噩梦。

我知道有一种解决方法可以将所有这些信息存储在全局的 .config 文件中,但我正在寻找一种只将值存储在我的解决方案中而不是我的机器上的解决方案。这是否可能?

4个回答

2
我发现了一个非常简单的解决方案在这里1. 在您的公共、类库项目中创建一个名为CommonSettings.config的文件。 2. 将您的公共设置放在此文件中:
<appSettings>
    <add key="someCommonSetting" value="some value"></add>
    <!-- more setting here -->
</appSettings>

注意:在您的CommonSettings.config中,必须是根元素(不要将其放在下面)。
3. 确保CommonSettings.config文件被复制到输出目录:

enter image description here

"在所有其他项目的App.Config/Web.config文件中,添加以上公共设置。这样,您的公共设置将被包含在每个其他配置文件中。"
<appSettings file="CommonSettings.config">
    <add key="Value1" value="123" />
</appSettings>  

注意:

For this approach to work, the shared config file should be copied to the project’s output directory so it is adjacent to the regular App/Web.config file. Add the existing shared .config file to the project as a Linked file and set it to ‘Copy if newer’. You should see something similar to this in your .csproj file:

<None Include="..\CommonConnectionStrings.config">
  <Link>CommonConnectionStrings.config</Link>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>

你可以对于ConnectionString进行相同的操作,在CommonConnectionStrings.config中复制所有连接字符串,在其他的App.Config/Web.Config中像这样引用它:
<connectionStrings configSource="CommonConnectionStrings.config" />

注意:如果您正在使用此解决方案来处理“connectionStrings”,则不能有特定于项目的连接字符串,所有连接字符串都将从公共配置文件中复制。

2

您可以将一个.config文件添加到一个项目中,然后选择添加 -> 现有项目... -> 添加为链接来将对该文件的引用添加到其他项目中。它们都将使用该文件进行构建,就好像它是它们自己的副本一样,但实际上只有一个副本,而且您只需要在一个地方进行更改。


我可以确认:RhysO的方法非常有效。我使用的是带有控制台和类库的Visual Studio 2015 Community和C# .Net 4.6.1。 - sapbucket

1
我想评论@Sahuagin的答案,但我没有足够的声望。这适用于App.config文件,但您必须添加一个文本文件,然后将其命名为App.config。之后只需声明XML(如下所示)。
<configuration>
   <!-- add you values or whatever here-->
</configuration>

然后按照@Sahuagin所说的添加链接到您的解决方案中。它非常有效。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接