gpt4 book ai didi

c# - 如何获取项目之间共享的app.settings文件的相对文件路径

转载 作者:太空宇宙 更新时间:2023-11-03 22:52:08 24 4
gpt4 key购买 nike

我的解决方案根目录中有一个 appsettings.config 文件,显示在我想在 3 个不同项目中引用的“解决方案项目”文件夹中

enter image description here

这3个项目包括以下内容

  • 网络性能和负载测试项目
  • 单元测试项目(UI 自动化测试)
  • 标准类库

我在类库项目中有一个配置文件的静态包装器,我打算从其他项目中引用它。

我遇到的问题是获取解决方案根目录的正确相对路径,无论当时正在运行哪个项目。

这是我的包装类代码....

public static class TestConfiguration
{
private static Configuration Config { get; }

static TestConfiguration()
{
var map = new ExeConfigurationFileMap();

map.ExeConfigFilename = Path.Combine(@"../../../appsettings.config");

Config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
}

public static string SepaTestDb {
get { return Config.ConnectionStrings.ConnectionStrings["SEPATest"].ConnectionString; }
}

public static string ApiUrl => Config.AppSettings.Settings["apiUrl"].Value;
}

这适用于负载测试项目,但我得到的其他项目......

System.NullReferenceException occurred
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=SA.SEPA.Web.UI.Selenium.Integration

...当我尝试获取 SepaTestDb 或 ApiUrl 属性时,可能是由于对象未从无效文件路径初始化

我如何设置一个相对路径,以便 appsettings.config 文件可以从不同的项目访问,并且如果任何项目正在构建中/在云中等运行,将被拾取。

编辑

..这是我的 appsettings.config 文件内容

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="SEPATest" connectionString="Server=[server];Database=SEPA-c7455a3a-86bd-4862-bb25-2b5d17d97f95Test;User Id=[username];Password=[password];" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="apiUrl" value="https://sasepaapi-sasepaapitest.azurewebsites.net/api" />
</appSettings>
</configuration>

非常感谢,

最佳答案

解决方案一:主要用于开发,不允许在运行环境共享配置文件

您可以链接 appsettings.config 到每个项目(Add Item As Link)

然后将这些链接的“复制到输出目录”属性更改为“如果较新则复制”

enter image description here

在每个项目的配置文件中使用如下:

...    
<appSettings configSource="appsettings.config" />
...

更新:

方案二:支持共享运行环境配置文件

用于在公共(public)位置托管 appsettings.config您还可以在项目的配置文件中使用它:

...
<appSettings file=".\..\..\..\appsettings.config" />
...

或者

绝对路径

...
<appSettings file="C:\tmp\appsettings.config" />
...

您可以通过 ConfigurationManager.AppSettings[] 访问这些设置。加载该文件不需要额外的工作。

关于c# - 如何获取项目之间共享的app.settings文件的相对文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46979297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com