Я занят добавлением поддержки нескольких .net каркасов и платформ.Кажется, работают разные рамки.Но если используется подходящая для конкретной платформы dll, я не знаю, как это проверить.Теперь кажется, что всегда используется версия MSIL / Any CPU ...
Сначала пакет nuget
Я следовал описанию по адресу:
https://docs.microsoft.com/en-us/nuget/create-packages/supporting-multiple-target-frameworks
И я также использую файлы .targets и .props.
Код см. В проекте Pullrequest Opensource: https://github.com/lucascebertin/Serilog.Sinks.Burst/pull/1
Использованиепакет nuget
При использовании пакета Nuget все работает.Но в настоящее время я делаю 2 проверки, чтобы увидеть, используется ли правильная платформа DLL.Примечание. Платформой является MSIL / Any CPU, x86 и x64.
Я делаю различие между dll в моем пакете и извлеченным / скопированным в папке bin используемого проекта:MSIL / Любая версия DLL ЦП копируется.
Вторая проверка выполняется из кода, чтобы увидеть, какая DLL используется во время выполнения:
var oraSinkAsm = Assembly.GetAssembly(typeof(Serilog.Sinks.Burst.Burst<>));
Console.WriteLine("Using {0} from {1}", oraSinkAsm.FullName, oraSinkAsm.CodeBase);
Console.WriteLine("Location: {0}", oraSinkAsm.Location);
Результат:
Использование Serilog.Sinks.Burst, версия = 1.0.1.0, культура = нейтральная, PublicKeyToken = ноль из файла: /// C: /Develop/Serilog.Sinks.Oracle/src/Serilog.Sinks.Oracle/Serilog.Sinks.Oracle.ConsoleTester / bin / x64 / Release / net452 / Serilog.Sinks.Burst.DLL Расположение: C: \ Develop \ Serilog.Sinks.Oracle \ src \ Serilog.Sinks.Oracle \ Serilog.Sinks.Oracle.ConsoleTester \ bin \ x64\ Release \ net452 \ Serilog.Sinks.Burst.dll
Поэтому выше bin \ x64 \ Release \ net452 \ Serilog.Sinks.Burst.dll выглядит как версия MSIL:
Исходная сборочная версия в моей папке dist \ build:
Так что они должны быть одинаковыми, но diffСостояния: I386 против AMD64 ???
Мои вопросы:
- Использует ли среда выполнения C # другой dll, чем время компиляции?
- Достаточны ли выше проверки илимне нужны другие?
- Действительно ли нужно создавать все варианты платформ или достаточно MSIL / Any CPU dll?