Изменение поведения настроек Microsoft.Extensions.Configuration по умолчанию при использовании PublishAOT.C#

Место общения программистов C#
Ответить
Anonymous
 Изменение поведения настроек Microsoft.Extensions.Configuration по умолчанию при использовании PublishAOT.

Сообщение Anonymous »

Почему при использовании PublishAOT значение по умолчанию value-type для типизированного класса конфигурации становится нулевым?
Пример:

Код: Выделить всё

var builder = WebApplication.CreateBuilder(args);

// Not neccessary for repro, but to reduce confounding variables
builder.Configuration.Sources.Clear();
builder.Configuration.AddInMemoryCollection(new Dictionary()
{
["String1"] = "Override1",
});

var config = builder.Configuration.Get();
Console.WriteLine($"String1: {config?.String1}");
Console.WriteLine($"String2: {config?.String2}");
Console.WriteLine($"Int3: {config?.Int3}");
Console.WriteLine($"Bool4: {config?.Bool4}");

class TypedConfig
{
public string String1 { get; set; } = "Value1";
public string String2 { get; set; } = "Value2";
public int Int3 { get; set; } = 443;
public bool Bool4 { get; set; } = true;
}
Вывод при сборке с помощью dotnet build:

String1: Override1

String2: Value2

Int3: 443

Bool4: True

Вывод при построении с помощью dotnet опубликовать -c Выпустить -r win-x64 -p:PublishAot=true с использованием .Net 8.0.300:

String1: Override1

String2: Value2

Int3: 0

Bool4: False


Подробнее здесь: https://stackoverflow.com/questions/785 ... n-using-pu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»