gpt4 book ai didi

asp.net - 在依赖 ConfigurationManager 的 .net core 2 中引用 .net 框架程序集

转载 作者:行者123 更新时间:2023-12-04 08:03:20 24 4
gpt4 key购买 nike

我们有一些遗留的 4.5.2 类库,它们通常使用 ConfigurationManager.AppSettings[key]
是否可以在 .net core 2 应用程序中引用这些内容,以便在后台正确修补配置?
IE。老来电ConfigurationManager.AppSettings[key]从 json 或 xml 中正确读取配置,但在 .netcore2 应用程序中。

如果我移植 keys对 appSettings.json 提出问题,然后调用 ConfigurationManager.AppSettings总是返回空值。

一个例子是:

{
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
},
"appSettings": {"test": "bo"},
"test": "hi"
}

进而:
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2", ConfigurationManager.AppSettings["test"] , ConfigurationManager.AppSettings["appSettings:test"] };
}

将显示:
["value1","value2",null,null]

最佳答案

您正在寻找的设置是可能的,并且设置可以在 app.config 中保持原样。

我有一个 .NET 4.5.2 类库“MyLibrary”和一个引用完整 .NET 框架 4.6.1 的 .NET Core 2.0 Web 应用程序“WebApp”。

我的图书馆

  • 具有对 System.Configuration 的程序集引用
  • 有一个 class Foo它使用 key foo 读取 appsetting

  • WebApp
  • 有一个对 MyLibrary 的项目引用
  • 具有对 System.Configuration 的程序集引用
  • 有一个 app.config包含 appSettings 的文件部分。 ( App.config 默认存在于 .NET Core 2.0 Web 应用程序项目中。)
  • 用于 Foo 的实例,调用其 GetSomething取值bar的方法被分配给变量 something .

  • 所有其他文件和设置都是默认的。下面是上面提到的那些。

    我的图书馆项目

    .NET 4.5.2

    Foo.cs
    using System;
    using System.Configuration;

    namespace PFX
    {
    public class Foo
    {
    public String GetSomething()
    {
    String r = ConfigurationManager.AppSettings["foo"];
    return r;
    }
    }
    }

    网络应用项目

    .NET Core 2.0.1 引用完整的 .NET 框架 4.6.1。

    WebApp.csproj
    <Project Sdk="Microsoft.NET.Sdk.Web">    
    <PropertyGroup>
    <TargetFramework>net461</TargetFramework>
    </PropertyGroup>

    <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="2.0.3" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.4" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.4" PrivateAssets="All" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.3" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.3" />
    </ItemGroup>

    <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
    </ItemGroup>

    <ItemGroup>
    <ProjectReference Include="..\MyLibrary\MyLibrary.csproj" />
    </ItemGroup>

    <ItemGroup>
    <Reference Include="System.Configuration" />
    </ItemGroup>
    </Project>

    App.config
    <configuration>
    <runtime>
    <gcServer enabled="true"/>
    </runtime>

    <appSettings>
    <add key="foo" value="bar"/>
    </appSettings>
    </configuration>

    程序.cs
    using System;
    using Microsoft.AspNetCore;
    using Microsoft.AspNetCore.Hosting;

    namespace WebApp
    {
    public class Program
    {
    public static void Main(string[] args)
    {
    PFX.Foo foo = new PFX.Foo();
    String someting = foo.GetSomething(); // bar

    BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(String[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .Build();
    }
    }

    关于asp.net - 在依赖 ConfigurationManager 的 .net core 2 中引用 .net 框架程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46003901/

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