-
Notifications
You must be signed in to change notification settings - Fork 391
Merge v6 release branch into master #1536
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add possibility to have double.NaN, double.NegativeInifinity and double.PositiveInifnity special values. --------- Co-authored-by: Andreas Gullberg Larsen <[email protected]> Co-authored-by: Étienne Fortin <[email protected]>
Came across some more unit names that seem wrong. Breaking changes once more. Related #1200
# Conflicts: # UnitsNet.Tests/GeneratedCode/TestsBase/CoefficientOfThermalExpansionTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/DensityTestsBase.g.cs
Related #1200 In the PR adding generic math (#1164) @AndreasLeeb states: > Regarding the operators in the *.extra.cs files, that could be tackled easily by describing the dependencies (operations) between different quantities in the quantity JSON files, and then the operator overloads and the generic math interfaces for the quantity structs could also be automatically generated. But that's a topic for another time 😄 I decided to give this a shot. `UnitRelations.json` contains relations extracted from the existing *.extra.cs files. I decided on a new file because multiplication is commutative and I didn't want to duplicate these in the individual quantity JSON files, or risk missing one or the other, so it's best to define them once in one place. The generator handles this by generating two operators for a single multiplication relation. The relations format uses the quantities method names. This is a bit unfortunate, but it's the best I could come up with without making the CodeGen project depend on UnitsNet, which would create a bit of a chicken/egg problem. This is not unheard of (self-hosted compilers) but I wanted to keep it simple for now. The generated code enables the removal of 44 *.extra.cs files, and the 17 remaining contain much less code. --------- Co-authored-by: Andreas Gullberg Larsen <[email protected]>
Related #1200 Fixes #1356 Apparently, protobuf-net does not support 0-indexed order values. ### Changes - Change `DataMember` explicit order from 0-indexed to 1-indexed ### Background Some investigation indicates that the actual order value is not important, only the relative ordering: #1356 (comment) - WCF should tolerate this, according to its docs. #1356 (comment) - Binary formatters hopefully only care about relative ordering and thus still compatible? - Protobuf-net, it never worked and should be OK - [BinaryFormatter](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.serialization.formatters.binary.binaryformatter?view=net-8.0) is obsolete and generally not recommended for years, so hopefully no users are affected - A bunch of others exist too, haven't looked into how they handle this - XML/JSON serializers should tolerate any order, can't imagine it breaking these?
Fixes #1194 --------- Co-authored-by: Andreas Gullberg Larsen <[email protected]>
# Conflicts: # UnitsNet.Serialization.JsonNet.Tests/AbbreviatedUnitsConverterTests.cs
Fixup of commit 7d1df9e Regenerate code to get more xmldoc fixes
In PR #1195 @angularsen asks @tmilnthorp: > Question; what do you think of also changing Information/BitRate from decimal to double? > > On one hand, it is sort of weird to risk getting rounding errors like 8.00000001 bits. On the other hand, for all other units (kilobyte, etc) that are probably way more used, floating point is perhaps the expected value representation. > > If we change all 3 quantities to double, we have the potential to clean up a LOT of QuantityValue complexity. How about we continue that discussion here? 😄 This PR is pretty straightforward and mimics #1195, except that `Information` is used as the typical decimal quantity in some tests. Because there won't be any decimal quantities left if these PRs get merged, I removed those tests in anticipation of completely removing all decimal support. --------- Co-authored-by: Andreas Gullberg Larsen <[email protected]>
### Changes - Remove `QuantityValue`, replaced with `double` - Remove `TValueType` from interfaces - Remove `IQuantity<TUnitType, out TValueType>` - Remove `IValueQuantity<out TValueType>` - Change `IQuantity<TSelf, TUnitType, out TValueType>` to `IQuantity<TSelf, TUnitType>` - Change `IArithmeticQuantity<TSelf, TUnitType, TValueType>` to `IArithmeticQuantity<TSelf, TUnitType>` ### Changes to UnitsNet.Serialiation.JsonNet - Deserializing previously serialized JSON for decimal quantities `Information`, `BitRate` and `Power` still work, but it now reads just `double Value` property and ignores `string ValueString` and `string ValueType` properties. This may lose precision compared to preserving the full `decimal` value, but `decimal` is no longer supported in v6. ### Background In #1195 @angularsen says: > If we change all 3 quantities to double, we have the potential to clean up a LOT of QuantityValue complexity. This made me wonder how deep that complexity goes so I decided to experiment, and this is the result. I must say some of these changes make me a bit sad. A lot of work and some very clever thinking went into supporting multiple numerical types, and I want to acknowledge that. 🙇 Also, I took it as far as possible but that might not be the best outcome, for example we might want to keep deserialization support. This just demonstrates a possible direction we could go in. --------- Co-authored-by: Andreas Gullberg Larsen <[email protected]>
This is safer, since no PR can modify the condition. Instead the approvals whether to publish or not is controlled by envirnoment, configured in Azure DevOps.
I think this was forgotten in #1289, removes 3k+ lines of comments that are not true anymore. --------- Co-authored-by: Andreas Gullberg Larsen <[email protected]>
### Changes - Change `Duration` from explicit to implicit cast to/from `TimeSpan` - Remove operator overloads for `TimeSpan` now covered by implicit cast for all but left operands ### Background See #1354 (comment) One issue is that the operator overloads only work when `TimeSpan` is the right operand. I changed the code generation to take this into account, but another option would be to make a breaking change where we just don't support `TimeSpan` as the left operand at all. Then users would have to cast explicitly, or for multiplication just reverse the operands. This would affect 13 operators: ``` TimeSpan * Acceleration TimeSpan * ElectricCurrent TimeSpan * ElectricCurrentGradient TimeSpan * ForceChangeRate TimeSpan * KinematicViscosity TimeSpan * MassFlow TimeSpan * MolarFlow TimeSpan * Power TimeSpan * PressureChangeRate TimeSpan * RotationalSpeed TimeSpan * Speed TimeSpan * TemperatureChangeRate TimeSpan * VolumeFlow ``` Of which only 6 are used in tests so I assume are supported in v5: ``` TimeSpan * KinematicViscosity TimeSpan * MassFlow TimeSpan * Power TimeSpan * RotationalSpeed TimeSpan * TemperatureChangeRate TimeSpan * Speed ``` --------- Co-authored-by: Andreas Gullberg Larsen <[email protected]>
In [#1329](#1329 (comment)) this proposal came up: > Another idea: generate division operators based on multiplication. Right now we define: > ``` > ElectricPotential.Volt = ElectricCurrent.Ampere * ElectricResistance.Ohm (and generate the reverse) > ElectricCurrent.Ampere = ElectricPotential.Volt / ElectricResistance.Ohm > ElectricResistance.Ohm = ElectricPotential.Volt / ElectricCurrent.Ampere > ``` > But those last two could also be generated based on the first. This PR is an experiment implementing this. ### Breaking changes: - `TimeSpan = Volume / VolumeFlow` => `Duration = Volume / VolumeFlow`
Added unit relation to get TemperatureChangeRate from TemperatureDelta divided by Duration. --------- Co-authored-by: Andreas Gullberg Larsen <[email protected]>
Some of the extension methods in `UnitMath.cs` (e.g. Average) take an `Enum unitType` argument. The compiler should be able to detect when the units type doesn't match the quantity type. * This will break backwards compatibility, but only for: * People doing really weird things. * People using the explicit generic type instead of inference (e.g. `Average<Length>(LengthUnit.Inch)`), in which case they can fix the code by changing it to e.g. `Average<Length, LengthUnit>(LengthUnit.Inch)` * This change might be warranted in `UnitConverter.cs` as well, but can't be implemented as a straight-forward refactor since it breaks compatibility in generated code (e.g. `unitConverter.SetConversionFunction<ElectricPotential>` in `ElectricPotential` should be `SetConversionFunction<ElectricPotential, ElectricPotentialUnit>` In addition, had to remove a few unit tests that were asserting type safety. All tests that were removed: * Were only testing that an incorrect behavior throws an exception (`Assert.Throws`) * Don't compile after the changes in `UnitMath.cs`
As we're doing breaking changes in v6, it might be worth upgrading to the current [Long Term Support](https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core) version of dotnet. This enables us to use C# 12 features and remove a bunch of conditional compilation (net 5328 deletions)
Fixes #1379 Change the license expression in the nugets to match the LICENSE file. Previously, nuget.org did not accept MIT-0 expression.
# Conflicts: # CodeGen/CodeGen.csproj # CodeGen/Generators/NanoFrameworkGen/NuspecGenerator.cs # CodeGen/Generators/UnitsNetGen/UnitTestBaseClassGenerator.cs # Common/UnitEnumValues.g.json # UnitsNet.Benchmark/UnitsNet.Benchmark.csproj # UnitsNet.NanoFramework/GeneratedCode/AbsorbedDoseOfIonizingRadiation/UnitsNet.NanoFramework.AbsorbedDoseOfIonizingRadiation.nuspec # UnitsNet.NanoFramework/GeneratedCode/Acceleration/UnitsNet.NanoFramework.Acceleration.nuspec # UnitsNet.NanoFramework/GeneratedCode/AmountOfSubstance/UnitsNet.NanoFramework.AmountOfSubstance.nuspec # UnitsNet.NanoFramework/GeneratedCode/AmplitudeRatio/UnitsNet.NanoFramework.AmplitudeRatio.nuspec # UnitsNet.NanoFramework/GeneratedCode/Angle/UnitsNet.NanoFramework.Angle.nuspec # UnitsNet.NanoFramework/GeneratedCode/ApparentEnergy/UnitsNet.NanoFramework.ApparentEnergy.nuspec # UnitsNet.NanoFramework/GeneratedCode/ApparentPower/UnitsNet.NanoFramework.ApparentPower.nuspec # UnitsNet.NanoFramework/GeneratedCode/Area/UnitsNet.NanoFramework.Area.nuspec # UnitsNet.NanoFramework/GeneratedCode/AreaDensity/UnitsNet.NanoFramework.AreaDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/AreaMomentOfInertia/UnitsNet.NanoFramework.AreaMomentOfInertia.nuspec # UnitsNet.NanoFramework/GeneratedCode/BitRate/UnitsNet.NanoFramework.BitRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/BrakeSpecificFuelConsumption/UnitsNet.NanoFramework.BrakeSpecificFuelConsumption.nuspec # UnitsNet.NanoFramework/GeneratedCode/Capacitance/UnitsNet.NanoFramework.Capacitance.nuspec # UnitsNet.NanoFramework/GeneratedCode/CoefficientOfThermalExpansion/UnitsNet.NanoFramework.CoefficientOfThermalExpansion.nuspec # UnitsNet.NanoFramework/GeneratedCode/Compressibility/UnitsNet.NanoFramework.Compressibility.nuspec # UnitsNet.NanoFramework/GeneratedCode/Density/UnitsNet.NanoFramework.Density.nuspec # UnitsNet.NanoFramework/GeneratedCode/Duration/UnitsNet.NanoFramework.Duration.nuspec # UnitsNet.NanoFramework/GeneratedCode/DynamicViscosity/UnitsNet.NanoFramework.DynamicViscosity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricAdmittance/UnitsNet.NanoFramework.ElectricAdmittance.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricCharge/UnitsNet.NanoFramework.ElectricCharge.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricChargeDensity/UnitsNet.NanoFramework.ElectricChargeDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricConductance/UnitsNet.NanoFramework.ElectricConductance.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricConductivity/UnitsNet.NanoFramework.ElectricConductivity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricCurrent/UnitsNet.NanoFramework.ElectricCurrent.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricCurrentDensity/UnitsNet.NanoFramework.ElectricCurrentDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricCurrentGradient/UnitsNet.NanoFramework.ElectricCurrentGradient.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricField/UnitsNet.NanoFramework.ElectricField.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricInductance/UnitsNet.NanoFramework.ElectricInductance.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricPotential/UnitsNet.NanoFramework.ElectricPotential.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialAc/UnitsNet.NanoFramework.ElectricPotentialAc.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialChangeRate/UnitsNet.NanoFramework.ElectricPotentialChangeRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialDc/UnitsNet.NanoFramework.ElectricPotentialDc.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricResistance/UnitsNet.NanoFramework.ElectricResistance.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricResistivity/UnitsNet.NanoFramework.ElectricResistivity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricSurfaceChargeDensity/UnitsNet.NanoFramework.ElectricSurfaceChargeDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/Energy/UnitsNet.NanoFramework.Energy.nuspec # UnitsNet.NanoFramework/GeneratedCode/EnergyDensity/UnitsNet.NanoFramework.EnergyDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/Entropy/UnitsNet.NanoFramework.Entropy.nuspec # UnitsNet.NanoFramework/GeneratedCode/Force/UnitsNet.NanoFramework.Force.nuspec # UnitsNet.NanoFramework/GeneratedCode/ForceChangeRate/UnitsNet.NanoFramework.ForceChangeRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/ForcePerLength/UnitsNet.NanoFramework.ForcePerLength.nuspec # UnitsNet.NanoFramework/GeneratedCode/Frequency/UnitsNet.NanoFramework.Frequency.nuspec # UnitsNet.NanoFramework/GeneratedCode/FuelEfficiency/UnitsNet.NanoFramework.FuelEfficiency.nuspec # UnitsNet.NanoFramework/GeneratedCode/HeatFlux/UnitsNet.NanoFramework.HeatFlux.nuspec # UnitsNet.NanoFramework/GeneratedCode/HeatTransferCoefficient/UnitsNet.NanoFramework.HeatTransferCoefficient.nuspec # UnitsNet.NanoFramework/GeneratedCode/Illuminance/UnitsNet.NanoFramework.Illuminance.nuspec # UnitsNet.NanoFramework/GeneratedCode/Impulse/UnitsNet.NanoFramework.Impulse.nuspec # UnitsNet.NanoFramework/GeneratedCode/Information/UnitsNet.NanoFramework.Information.nuspec # UnitsNet.NanoFramework/GeneratedCode/Irradiance/UnitsNet.NanoFramework.Irradiance.nuspec # UnitsNet.NanoFramework/GeneratedCode/Irradiation/UnitsNet.NanoFramework.Irradiation.nuspec # UnitsNet.NanoFramework/GeneratedCode/Jerk/UnitsNet.NanoFramework.Jerk.nuspec # UnitsNet.NanoFramework/GeneratedCode/KinematicViscosity/UnitsNet.NanoFramework.KinematicViscosity.nuspec # UnitsNet.NanoFramework/GeneratedCode/LapseRate/UnitsNet.NanoFramework.LapseRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/LeakRate/UnitsNet.NanoFramework.LeakRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/Length/UnitsNet.NanoFramework.Length.nuspec # UnitsNet.NanoFramework/GeneratedCode/Level/UnitsNet.NanoFramework.Level.nuspec # UnitsNet.NanoFramework/GeneratedCode/LinearDensity/UnitsNet.NanoFramework.LinearDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/LinearPowerDensity/UnitsNet.NanoFramework.LinearPowerDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/Luminance/UnitsNet.NanoFramework.Luminance.nuspec # UnitsNet.NanoFramework/GeneratedCode/Luminosity/UnitsNet.NanoFramework.Luminosity.nuspec # UnitsNet.NanoFramework/GeneratedCode/LuminousFlux/UnitsNet.NanoFramework.LuminousFlux.nuspec # UnitsNet.NanoFramework/GeneratedCode/LuminousIntensity/UnitsNet.NanoFramework.LuminousIntensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/MagneticField/UnitsNet.NanoFramework.MagneticField.nuspec # UnitsNet.NanoFramework/GeneratedCode/MagneticFlux/UnitsNet.NanoFramework.MagneticFlux.nuspec # UnitsNet.NanoFramework/GeneratedCode/Magnetization/UnitsNet.NanoFramework.Magnetization.nuspec # UnitsNet.NanoFramework/GeneratedCode/Mass/UnitsNet.NanoFramework.Mass.nuspec # UnitsNet.NanoFramework/GeneratedCode/MassConcentration/UnitsNet.NanoFramework.MassConcentration.nuspec # UnitsNet.NanoFramework/GeneratedCode/MassFlow/UnitsNet.NanoFramework.MassFlow.nuspec # UnitsNet.NanoFramework/GeneratedCode/MassFlux/UnitsNet.NanoFramework.MassFlux.nuspec # UnitsNet.NanoFramework/GeneratedCode/MassFraction/UnitsNet.NanoFramework.MassFraction.nuspec # UnitsNet.NanoFramework/GeneratedCode/MassMomentOfInertia/UnitsNet.NanoFramework.MassMomentOfInertia.nuspec # UnitsNet.NanoFramework/GeneratedCode/Molality/UnitsNet.NanoFramework.Molality.nuspec # UnitsNet.NanoFramework/GeneratedCode/MolarEnergy/UnitsNet.NanoFramework.MolarEnergy.nuspec # UnitsNet.NanoFramework/GeneratedCode/MolarEntropy/UnitsNet.NanoFramework.MolarEntropy.nuspec # UnitsNet.NanoFramework/GeneratedCode/MolarFlow/UnitsNet.NanoFramework.MolarFlow.nuspec # UnitsNet.NanoFramework/GeneratedCode/MolarMass/UnitsNet.NanoFramework.MolarMass.nuspec # UnitsNet.NanoFramework/GeneratedCode/Molarity/UnitsNet.NanoFramework.Molarity.nuspec # UnitsNet.NanoFramework/GeneratedCode/Permeability/UnitsNet.NanoFramework.Permeability.nuspec # UnitsNet.NanoFramework/GeneratedCode/Permittivity/UnitsNet.NanoFramework.Permittivity.nuspec # UnitsNet.NanoFramework/GeneratedCode/PorousMediumPermeability/UnitsNet.NanoFramework.PorousMediumPermeability.nuspec # UnitsNet.NanoFramework/GeneratedCode/Power/UnitsNet.NanoFramework.Power.nuspec # UnitsNet.NanoFramework/GeneratedCode/PowerDensity/UnitsNet.NanoFramework.PowerDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/PowerRatio/UnitsNet.NanoFramework.PowerRatio.nuspec # UnitsNet.NanoFramework/GeneratedCode/Pressure/UnitsNet.NanoFramework.Pressure.nuspec # UnitsNet.NanoFramework/GeneratedCode/PressureChangeRate/UnitsNet.NanoFramework.PressureChangeRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/Properties/AssemblyInfo.cs # UnitsNet.NanoFramework/GeneratedCode/Quantities/RadiationEquivalentDoseRate.g.cs # UnitsNet.NanoFramework/GeneratedCode/RadiationEquivalentDose/UnitsNet.NanoFramework.RadiationEquivalentDose.nuspec # UnitsNet.NanoFramework/GeneratedCode/RadiationEquivalentDoseRate/UnitsNet.NanoFramework.RadiationEquivalentDoseRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/RadiationExposure/UnitsNet.NanoFramework.RadiationExposure.nuspec # UnitsNet.NanoFramework/GeneratedCode/Radioactivity/UnitsNet.NanoFramework.Radioactivity.nuspec # UnitsNet.NanoFramework/GeneratedCode/Ratio/UnitsNet.NanoFramework.Ratio.nuspec # UnitsNet.NanoFramework/GeneratedCode/RatioChangeRate/UnitsNet.NanoFramework.RatioChangeRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/ReactiveEnergy/UnitsNet.NanoFramework.ReactiveEnergy.nuspec # UnitsNet.NanoFramework/GeneratedCode/ReactivePower/UnitsNet.NanoFramework.ReactivePower.nuspec # UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/UnitsNet.NanoFramework.ReciprocalArea.nuspec # UnitsNet.NanoFramework/GeneratedCode/ReciprocalLength/UnitsNet.NanoFramework.ReciprocalLength.nuspec # UnitsNet.NanoFramework/GeneratedCode/RelativeHumidity/UnitsNet.NanoFramework.RelativeHumidity.nuspec # UnitsNet.NanoFramework/GeneratedCode/RotationalAcceleration/UnitsNet.NanoFramework.RotationalAcceleration.nuspec # UnitsNet.NanoFramework/GeneratedCode/RotationalSpeed/UnitsNet.NanoFramework.RotationalSpeed.nuspec # UnitsNet.NanoFramework/GeneratedCode/RotationalStiffness/UnitsNet.NanoFramework.RotationalStiffness.nuspec # UnitsNet.NanoFramework/GeneratedCode/RotationalStiffnessPerLength/UnitsNet.NanoFramework.RotationalStiffnessPerLength.nuspec # UnitsNet.NanoFramework/GeneratedCode/Scalar/UnitsNet.NanoFramework.Scalar.nuspec # UnitsNet.NanoFramework/GeneratedCode/SolidAngle/UnitsNet.NanoFramework.SolidAngle.nuspec # UnitsNet.NanoFramework/GeneratedCode/SpecificEnergy/UnitsNet.NanoFramework.SpecificEnergy.nuspec # UnitsNet.NanoFramework/GeneratedCode/SpecificEntropy/UnitsNet.NanoFramework.SpecificEntropy.nuspec # UnitsNet.NanoFramework/GeneratedCode/SpecificFuelConsumption/UnitsNet.NanoFramework.SpecificFuelConsumption.nuspec # UnitsNet.NanoFramework/GeneratedCode/SpecificVolume/UnitsNet.NanoFramework.SpecificVolume.nuspec # UnitsNet.NanoFramework/GeneratedCode/SpecificWeight/UnitsNet.NanoFramework.SpecificWeight.nuspec # UnitsNet.NanoFramework/GeneratedCode/Speed/UnitsNet.NanoFramework.Speed.nuspec # UnitsNet.NanoFramework/GeneratedCode/StandardVolumeFlow/UnitsNet.NanoFramework.StandardVolumeFlow.nuspec # UnitsNet.NanoFramework/GeneratedCode/Temperature/UnitsNet.NanoFramework.Temperature.nuspec # UnitsNet.NanoFramework/GeneratedCode/TemperatureChangeRate/UnitsNet.NanoFramework.TemperatureChangeRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/TemperatureDelta/UnitsNet.NanoFramework.TemperatureDelta.nuspec # UnitsNet.NanoFramework/GeneratedCode/TemperatureGradient/UnitsNet.NanoFramework.TemperatureGradient.nuspec # UnitsNet.NanoFramework/GeneratedCode/ThermalConductivity/UnitsNet.NanoFramework.ThermalConductivity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ThermalInsulance/UnitsNet.NanoFramework.ThermalInsulance.nuspec # UnitsNet.NanoFramework/GeneratedCode/Torque/UnitsNet.NanoFramework.Torque.nuspec # UnitsNet.NanoFramework/GeneratedCode/Turbidity/UnitsNet.NanoFramework.Turbidity.nuspec # UnitsNet.NanoFramework/GeneratedCode/VitaminA/UnitsNet.NanoFramework.VitaminA.nuspec # UnitsNet.NanoFramework/GeneratedCode/Volume/UnitsNet.NanoFramework.Volume.nuspec # UnitsNet.NanoFramework/GeneratedCode/VolumeConcentration/UnitsNet.NanoFramework.VolumeConcentration.nuspec # UnitsNet.NanoFramework/GeneratedCode/VolumeFlow/UnitsNet.NanoFramework.VolumeFlow.nuspec # UnitsNet.NanoFramework/GeneratedCode/VolumeFlowPerArea/UnitsNet.NanoFramework.VolumeFlowPerArea.nuspec # UnitsNet.NanoFramework/GeneratedCode/VolumePerLength/UnitsNet.NanoFramework.VolumePerLength.nuspec # UnitsNet.NanoFramework/GeneratedCode/VolumetricHeatCapacity/UnitsNet.NanoFramework.VolumetricHeatCapacity.nuspec # UnitsNet.NanoFramework/GeneratedCode/WarpingMomentOfInertia/UnitsNet.NanoFramework.WarpingMomentOfInertia.nuspec # UnitsNet.NumberExtensions.Tests/UnitsNet.NumberExtensions.Tests.csproj # UnitsNet.NumberExtensions/GeneratedCode/NumberToApparentEnergyExtensions.g.cs # UnitsNet.NumberExtensions/GeneratedCode/NumberToApparentPowerExtensions.g.cs # UnitsNet.NumberExtensions/GeneratedCode/NumberToCapacitanceExtensions.g.cs # UnitsNet.NumberExtensions/GeneratedCode/NumberToElectricAdmittanceExtensions.g.cs # UnitsNet.NumberExtensions/GeneratedCode/NumberToElectricConductanceExtensions.g.cs # UnitsNet.NumberExtensions/GeneratedCode/NumberToElectricPotentialAcExtensions.g.cs # UnitsNet.NumberExtensions/GeneratedCode/NumberToElectricPotentialDcExtensions.g.cs # UnitsNet.NumberExtensions/GeneratedCode/NumberToElectricResistanceExtensions.g.cs # UnitsNet.NumberExtensions/GeneratedCode/NumberToRadiationEquivalentDoseRateExtensions.g.cs # UnitsNet.NumberExtensions/GeneratedCode/NumberToReactiveEnergyExtensions.g.cs # UnitsNet.NumberExtensions/GeneratedCode/NumberToReactivePowerExtensions.g.cs # UnitsNet.NumberExtensions/GeneratedCode/NumberToTemperatureChangeRateExtensions.g.cs # UnitsNet.NumberExtensions/UnitsNet.NumberExtensions.csproj # UnitsNet.Serialization.JsonNet.Tests/UnitsNet.Serialization.JsonNet.Tests.csproj # UnitsNet.Serialization.JsonNet/UnitsNet.Serialization.JsonNet.csproj # UnitsNet.Tests/CustomCode/RadiationEquivalentDoseRateTests.cs # UnitsNet.Tests/CustomCode/RadiationEquivalentDoseTests.cs # UnitsNet.Tests/GeneratedCode/TestsBase/AngleTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/BitRateTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/CoefficientOfThermalExpansionTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/DensityTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/DynamicViscosityTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/ElectricAdmittanceTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/ElectricConductanceTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/ElectricResistanceTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/FuelEfficiencyTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/HeatFluxTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/HeatTransferCoefficientTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/InformationTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/MassConcentrationTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/MolarityTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/PowerTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/RadiationEquivalentDoseRateTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/SpecificEntropyTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/TemperatureChangeRateTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/ThermalConductivityTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/ThermalResistanceTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/TorquePerLengthTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/VolumeConcentrationTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/VolumeFlowTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/VolumetricHeatCapacityTestsBase.g.cs # UnitsNet.Tests/UnitAbbreviationsCacheTests.cs # UnitsNet.Tests/UnitsNet.Tests.csproj # UnitsNet/CustomCode/Quantities/Power.extra.cs # UnitsNet/CustomCode/UnitParser.cs # UnitsNet/GeneratedCode/Quantities/RadiationEquivalentDoseRate.g.cs # UnitsNet/GeneratedCode/Quantities/ThermalInsulance.g.cs # UnitsNet/GeneratedCode/Quantities/TorquePerLength.g.cs # UnitsNet/QuantityFormatter.cs # UnitsNet/UnitsNet.csproj
Fixes #1463 Fixes #1043 - removed the `UnitSystem` constructor from the Dimensionless quantities (which was previously throwing) - `As`/`ToUnit(UnitSystem)` for all dimensionless quantities now convert to their `BaseUnit` (i.e. the "DecimalFraction") * - `As/ToUnit(UnitSystem)` for all other quantities refactored using the QuantityInfoExtensions - added tests for the `UnitSystem` methods, skipping the tests for all quantities that fail with `UnitSystem.SI` (with a reason) There are only two dimensionless quantities (IMO) that don't fit the definition: - `RelativeHumidity`: currently has only the `Percent` unit, I think we should add the `DecimalFraction`, setting it to be the `BaseUnit` - `FuelEfficiency`: I think this could be defined as `"L": -2` with the addition of the `MeterPerCubicMeter` unit (possibly setting it as its `BaseUnit`, if we want to satisfy the `BaseUnit_HasSIBase` test) You can look for `As_UnitSystem_ReturnsValueInDimensionlessUnit` if you want to check the rest of the dimensionless quantities. Regarding the removed `BaseUnits` (see `Force.json` or `Pressure.json`), those were detected by some earlier tests I had in place, regarding the multiplication/division operators where I used the following definition: - A given operation between two quantities (either multiplication or division) such as `A / B = C` is only defined if `A.Dimensions / B.Dimensions = C.Dimensions` - When the intersection between `A.Dimensions` and `B.Dimensions` is the empty set, for every unit of `A` and `B` for which the `BaseUnits` is not `Unidefined`, and every unit of `C`, having `BaseUnits` = `A.BaseUnits union B.BaseUnits`, it must be true that `C.Value = A.Value / B.Value`. - When the intersection between `A.Dimensions` and `B.Dimensions` is not empty, and the intersecting `BaseUnits` of `A` , `B` and `C` are all the same, then again we have the same condition, which I generally refer to as "the conversion coefficient is 1" - The same logic can be used to infer the unit-conversion coefficient based off the `Dimensions` and a pair of `BaseUnits`, but special attention needs to be taken w.r.t. the exponents (e.g. `Area` is `L2` so the unit-conversion coefficients are squares of the ones from `Length`) - If we want to extend this definition in the future, we should consider introducing a way to override the "default conversion coefficient" (`1`).. Here are some links: https://en.wikipedia.org/wiki/Dimensional_analysis https://en.wikipedia.org/wiki/International_System_of_Units#Definition https://en.wikipedia.org/wiki/Coherence_(units_of_measurement)
- added a new `UnitPrefixBuilder` (called from the `QuantityJonsFilesParser`) - removed the skipped tests (with the "The BaseUnits are not yet supported by the prefix-generator" reason) - added a `DebugDisplay` for the `Quantity` and the `Unit` (JsonTypes) and - added a `ToString` implementation to the `BaseDimensions` (JsonTypes) https://en.wikipedia.org/wiki/Metric_prefix --------- Co-authored-by: Andreas Gullberg Larsen <[email protected]>
- `BaseUnits`: no longer using the `AbbeviationsCache`, the new format is `L=Meter, M=Kilogram, T=Second` - `BaseDimensions`: the exponent moved inside the dimension-brackets: `[Length][Time^-1]` - `BaseDimensions`: minor performance improvements As mentioned in #1452, the main motivation here is the removal of the potential side effects of accessing/loading the unit abbreviations (e.g. during the `QuantityInfo` construction)
Renaming `MassMomentOfInertia.TonneSquareMilimeter` to `MassMomentOfInertia.TonneSquareMillimeter` (as part of #1200 )
… UnitNotFoundException (#1484) (#1494) Fixes #1423 for `release-v6` Carry over from #1484 `UnitParser.Parse<LengthUnit>("MM")` fails due to matching both `Megameter` and `Millimeter` in case-insensitive matching, but matches neither of them in the case-sensitive fallback. It was confusing to get `UnitsNotFoundException` in this case, since case-insensitive usually works for most units. ### Changes - Handle this case and throw `AmbiguousUnitParseException` instead of `UnitNotFoundException` - Describe the case-insensitive units that matched - Fix existing test `Parse_WithMultipleCaseInsensitiveMatchesButNoExactMatches_ThrowsUnitNotFoundException` - Skip retrying with fallback culture if no specific `formatProvider` was given - Avoid some of the unnecessary array allocations Co-authored-by: Andreas Gullberg Larsen <[email protected]>
Improving the `ToUnit` test coverage: - `ToUnit_FromNonBaseUnit_ReturnsQuantityWithGivenUnit` now also tests the non-base to non-base conversions - `ToUnit_FromNonBaseUnit_ReturnsQuantityWithGivenUnit` is no longer skipped for quantities with a single unit (the test is still generated) - added the `ToUnit_FromIQuantity_ReturnsTheExpectedIQuantity` test: covering the `IQuantity` interfaces - added the `Convert_GetTypeCode_Returns_Object` test (completing the `IConvertible` interface coverage) - `IQuantityTests`: removed the redundant `UnitSystem` tests and updated "wrong unit type" tests, using all quantities
Ensure that all base quantity units are `BaseUnits`: - introduced a test for each of the base quantities (`Length`, `Mass` etc.) that ensures that all of their units have valid `BaseUnits` definition - fixed some incorrect `BaseUnits` definitions: `Acceleration.StandardGravity` and `Temperature.MillidegreeCelsius` - added missing `BaseUnits` definitions: `Length`, `Temperature` and `TemperatureChangeRate` (removing 3 out of its 4 `[Skip]`-ed tests)
Include the non-prefixed `BaseUnits` in the `BaseUnitPrefixes`: - the `BaseUnitPrefixes` now also handles the case where prefixing an already prefixed base unit results in a non-prefixed base unit - regenerating the quantities resulted in a number of new `BaseUnits` to become available (as well as some which got their scales reduced)
In order to better compare the performance between the existing v6 and the one with the [Fractions](https://github.com/danm-de/Fractions) I've been using these benchmarks. They are not _very polished_ (and I haven't had the time for the string-related stuff) but they do the trick. You don't have to merge them if you don't want to, but at least they are here (so I can reference the code). I'll probably add the results from my local runs in a comment (or more like a bunch of comments) later on (my previous results got wiped by the build script 😆) - but I was hoping that we could update the packages and add net9.0 to the list of targets first (there are [lots of a cool stuff](Fractions-DotNet/Fractions#90) in net9). PS I'm not sure if that old `gh-action` would still work or not, but even adding the results by hand ([here?](https://github.com/angularsen/UnitsNet/tree/gh-pages/benchmarks/)) is an option. Here's what I did for the [Fractions](https://github.com/danm-de/Fractions/blob/master/benchmarks/Readme.md) (the `Readme.md` was 90% AI generated).
Changing the `Dimensions` and `BaseUnit` for the `FuelEfficiency`: - `BaseUnit` changed from `LiterPer100Kilometers` (defaults to `+Infinity`) to `KilometersPerLiter` (defaults to `0`) - added `Dimensions` of `"L": -2` (was previously treated as a dimensionless quantity) - updated the relevant tests - skipped all SI-related tests
Implementing change suggested in #1483 .
…PerMilliliter (#1504) fixes the `VolumeConcentration` units `LitersPerLiter` and `LitersPerMilliliter` (using the _PluralName_ for the `SingularName` property)
Removing the `FrequencyUnit.BUnit`. As discussed in #1393 (comment)
…1499) This is a port of #1393, targeting the release-v6 consisting of the changes that broke one test or another. Most of these are related to conversions involving the US/British units but there is also some confusion regarding the [Calorie](https://en.wikipedia.org/wiki/Calorie) - the value of `4.1868` was used (instead of `4.184`) in a few places, which is a note-worthy difference. Here are all the tests that broke: - `HeatFlux` : due to the change in `Calorie` - `HeatTransferCoefficient` : due to the change in `Calorie` - `Impulse` : `PoundFootPerSecond`, `SlugFootPerSecond` were represented by a single coefficient that is significantly different from what got: see #1393 (comment) - `Luminosity` : see #1393 (comment). - `Power`: MechanicalHorsepower changed from `{x} * 745.69` to `{x} * 76.0402249 * 9.80665` as given by [this article](https://en.wikipedia.org/wiki/Horsepower#Imperial_horsepower) - `Pressure` the [TechnicalAtmosphere](https://en.wikipedia.org/wiki/Kilogram-force_per_square_centimetre) coefficient (no idea where the old one was taken from), see also #1393 (comment) - `SpecificFuelConsumption` : I'm not a domain expert, but `{x} * 28.33` doesn't look right for `PoundMassPerPoundForceHour` (lb/(lbf·h))- here's what I got: `{x} * 453.59237 / (0.0044482216152605 * 3600)` - `ThermalResistance`: using different conversion coefficients for `BTU` and `Calorie` from the one defined in `Energy` (note: I wasn't able to confirm the "correct" conversion coefficient for BTU). - `VolumetricHeatCapacity`: using different conversion coefficient for `Calorie`
- `PressureUnit`: remove the `MeterOfElevation` and `FootOfElevation` - `Pressure`: added `FromElevation` and `ToElevation` methods (using `Length`)
`Enum` boxing optimizations: - introduce the `UnitKey` struct as a replacement for the conversions from `TUnit` to `Enum` - re-mapped the `UnitAbbreviationCache` using the `UnitKey` for the concurrent dictionary - removed all `Convert.ToInt32(..)` calls - optimized the `QuantityInfoLookup` collections - refactored some of the `Quantity`/`UnitConverter` code (using the `UnitParser`/`QuantityInfoLookup`) - added some tests and benchmarks covering the new modifications Breaking changes: - changing the `Quantity.Names` from `string[]` to `IReadOnlyCollection<string>` - changing the `Quantity.Infos` from `QuantityInfo[]` to `IReadOnlyList<QuantityInfo>` - marking the `UnitConverter.ConvertByAbbreviation` method that takes a `string?` for the `IFormatProvider?` as `[Obsolete]` (created an overload) - `UnitsNetSetup`: replaced the `ICollection<QuantityInfo>` constructor parameter with `IEnumerable<QuantityInfo>` - renamed the `QuantityInfo.ValueType` to `QuantityInfo.QuantityType` (making the old property `[Obsolete]`) - renamed two of the parameters of `UnitConverter.ConvertByName`
# Conflicts: # CodeGen/Generators/NanoFrameworkGen/NuspecGenerator.cs # PerfTests/PerfTest_Startup/PerfTest_Startup.csproj # PerfTests/PerfTest_Startup_v4_144_0/PerfTest_Startup_v4_144_0.csproj # PerfTests/PerfTest_Startup_v4_72_0/PerfTest_Startup_v4_72_0.csproj # UnitsNet.Benchmark/UnitsNet.Benchmark.csproj # UnitsNet.NanoFramework/GeneratedCode/AbsorbedDoseOfIonizingRadiation/UnitsNet.NanoFramework.AbsorbedDoseOfIonizingRadiation.nuspec # UnitsNet.NanoFramework/GeneratedCode/Acceleration/UnitsNet.NanoFramework.Acceleration.nuspec # UnitsNet.NanoFramework/GeneratedCode/AmountOfSubstance/UnitsNet.NanoFramework.AmountOfSubstance.nuspec # UnitsNet.NanoFramework/GeneratedCode/AmplitudeRatio/UnitsNet.NanoFramework.AmplitudeRatio.nuspec # UnitsNet.NanoFramework/GeneratedCode/Angle/UnitsNet.NanoFramework.Angle.nuspec # UnitsNet.NanoFramework/GeneratedCode/ApparentEnergy/UnitsNet.NanoFramework.ApparentEnergy.nuspec # UnitsNet.NanoFramework/GeneratedCode/ApparentPower/ApparentPower.nfproj # UnitsNet.NanoFramework/GeneratedCode/ApparentPower/UnitsNet.NanoFramework.ApparentPower.nuspec # UnitsNet.NanoFramework/GeneratedCode/ApparentPower/packages.config # UnitsNet.NanoFramework/GeneratedCode/Area/UnitsNet.NanoFramework.Area.nuspec # UnitsNet.NanoFramework/GeneratedCode/AreaDensity/UnitsNet.NanoFramework.AreaDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/AreaMomentOfInertia/UnitsNet.NanoFramework.AreaMomentOfInertia.nuspec # UnitsNet.NanoFramework/GeneratedCode/BitRate/UnitsNet.NanoFramework.BitRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/BrakeSpecificFuelConsumption/UnitsNet.NanoFramework.BrakeSpecificFuelConsumption.nuspec # UnitsNet.NanoFramework/GeneratedCode/Capacitance/Capacitance.nfproj # UnitsNet.NanoFramework/GeneratedCode/Capacitance/UnitsNet.NanoFramework.Capacitance.nuspec # UnitsNet.NanoFramework/GeneratedCode/Capacitance/packages.config # UnitsNet.NanoFramework/GeneratedCode/CoefficientOfThermalExpansion/UnitsNet.NanoFramework.CoefficientOfThermalExpansion.nuspec # UnitsNet.NanoFramework/GeneratedCode/Compressibility/UnitsNet.NanoFramework.Compressibility.nuspec # UnitsNet.NanoFramework/GeneratedCode/Density/UnitsNet.NanoFramework.Density.nuspec # UnitsNet.NanoFramework/GeneratedCode/DoseAreaProduct/UnitsNet.NanoFramework.DoseAreaProduct.nuspec # UnitsNet.NanoFramework/GeneratedCode/Duration/UnitsNet.NanoFramework.Duration.nuspec # UnitsNet.NanoFramework/GeneratedCode/DynamicViscosity/UnitsNet.NanoFramework.DynamicViscosity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricAdmittance/UnitsNet.NanoFramework.ElectricAdmittance.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricApparentEnergy/UnitsNet.NanoFramework.ElectricApparentEnergy.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricApparentPower/UnitsNet.NanoFramework.ElectricApparentPower.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricCapacitance/UnitsNet.NanoFramework.ElectricCapacitance.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricCharge/UnitsNet.NanoFramework.ElectricCharge.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricChargeDensity/UnitsNet.NanoFramework.ElectricChargeDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricConductance/UnitsNet.NanoFramework.ElectricConductance.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricConductivity/UnitsNet.NanoFramework.ElectricConductivity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricCurrent/UnitsNet.NanoFramework.ElectricCurrent.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricCurrentDensity/UnitsNet.NanoFramework.ElectricCurrentDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricCurrentGradient/UnitsNet.NanoFramework.ElectricCurrentGradient.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricField/UnitsNet.NanoFramework.ElectricField.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricImpedance/UnitsNet.NanoFramework.ElectricImpedance.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricInductance/UnitsNet.NanoFramework.ElectricInductance.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricPotential/UnitsNet.NanoFramework.ElectricPotential.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialAc/ElectricPotentialAc.nfproj # UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialAc/UnitsNet.NanoFramework.ElectricPotentialAc.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialAc/packages.config # UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialChangeRate/UnitsNet.NanoFramework.ElectricPotentialChangeRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialDc/ElectricPotentialDc.nfproj # UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialDc/UnitsNet.NanoFramework.ElectricPotentialDc.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricPotentialDc/packages.config # UnitsNet.NanoFramework/GeneratedCode/ElectricReactance/UnitsNet.NanoFramework.ElectricReactance.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricReactiveEnergy/UnitsNet.NanoFramework.ElectricReactiveEnergy.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricReactivePower/UnitsNet.NanoFramework.ElectricReactivePower.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricResistance/UnitsNet.NanoFramework.ElectricResistance.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricResistivity/UnitsNet.NanoFramework.ElectricResistivity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricSurfaceChargeDensity/UnitsNet.NanoFramework.ElectricSurfaceChargeDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ElectricSusceptance/UnitsNet.NanoFramework.ElectricSusceptance.nuspec # UnitsNet.NanoFramework/GeneratedCode/Energy/UnitsNet.NanoFramework.Energy.nuspec # UnitsNet.NanoFramework/GeneratedCode/EnergyDensity/UnitsNet.NanoFramework.EnergyDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/Entropy/UnitsNet.NanoFramework.Entropy.nuspec # UnitsNet.NanoFramework/GeneratedCode/Force/UnitsNet.NanoFramework.Force.nuspec # UnitsNet.NanoFramework/GeneratedCode/ForceChangeRate/UnitsNet.NanoFramework.ForceChangeRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/ForcePerLength/UnitsNet.NanoFramework.ForcePerLength.nuspec # UnitsNet.NanoFramework/GeneratedCode/Frequency/UnitsNet.NanoFramework.Frequency.nuspec # UnitsNet.NanoFramework/GeneratedCode/FuelEfficiency/UnitsNet.NanoFramework.FuelEfficiency.nuspec # UnitsNet.NanoFramework/GeneratedCode/HeatFlux/UnitsNet.NanoFramework.HeatFlux.nuspec # UnitsNet.NanoFramework/GeneratedCode/HeatTransferCoefficient/UnitsNet.NanoFramework.HeatTransferCoefficient.nuspec # UnitsNet.NanoFramework/GeneratedCode/Illuminance/UnitsNet.NanoFramework.Illuminance.nuspec # UnitsNet.NanoFramework/GeneratedCode/Impulse/UnitsNet.NanoFramework.Impulse.nuspec # UnitsNet.NanoFramework/GeneratedCode/Information/UnitsNet.NanoFramework.Information.nuspec # UnitsNet.NanoFramework/GeneratedCode/Irradiance/UnitsNet.NanoFramework.Irradiance.nuspec # UnitsNet.NanoFramework/GeneratedCode/Irradiation/UnitsNet.NanoFramework.Irradiation.nuspec # UnitsNet.NanoFramework/GeneratedCode/Jerk/UnitsNet.NanoFramework.Jerk.nuspec # UnitsNet.NanoFramework/GeneratedCode/KinematicViscosity/UnitsNet.NanoFramework.KinematicViscosity.nuspec # UnitsNet.NanoFramework/GeneratedCode/LapseRate/UnitsNet.NanoFramework.LapseRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/LeakRate/UnitsNet.NanoFramework.LeakRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/Length/UnitsNet.NanoFramework.Length.nuspec # UnitsNet.NanoFramework/GeneratedCode/Level/UnitsNet.NanoFramework.Level.nuspec # UnitsNet.NanoFramework/GeneratedCode/LinearDensity/UnitsNet.NanoFramework.LinearDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/LinearPowerDensity/UnitsNet.NanoFramework.LinearPowerDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/Luminance/UnitsNet.NanoFramework.Luminance.nuspec # UnitsNet.NanoFramework/GeneratedCode/Luminosity/UnitsNet.NanoFramework.Luminosity.nuspec # UnitsNet.NanoFramework/GeneratedCode/LuminousFlux/UnitsNet.NanoFramework.LuminousFlux.nuspec # UnitsNet.NanoFramework/GeneratedCode/LuminousIntensity/UnitsNet.NanoFramework.LuminousIntensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/MagneticField/UnitsNet.NanoFramework.MagneticField.nuspec # UnitsNet.NanoFramework/GeneratedCode/MagneticFlux/UnitsNet.NanoFramework.MagneticFlux.nuspec # UnitsNet.NanoFramework/GeneratedCode/Magnetization/UnitsNet.NanoFramework.Magnetization.nuspec # UnitsNet.NanoFramework/GeneratedCode/Mass/UnitsNet.NanoFramework.Mass.nuspec # UnitsNet.NanoFramework/GeneratedCode/MassConcentration/UnitsNet.NanoFramework.MassConcentration.nuspec # UnitsNet.NanoFramework/GeneratedCode/MassFlow/UnitsNet.NanoFramework.MassFlow.nuspec # UnitsNet.NanoFramework/GeneratedCode/MassFlux/UnitsNet.NanoFramework.MassFlux.nuspec # UnitsNet.NanoFramework/GeneratedCode/MassFraction/UnitsNet.NanoFramework.MassFraction.nuspec # UnitsNet.NanoFramework/GeneratedCode/MassMomentOfInertia/UnitsNet.NanoFramework.MassMomentOfInertia.nuspec # UnitsNet.NanoFramework/GeneratedCode/Molality/UnitsNet.NanoFramework.Molality.nuspec # UnitsNet.NanoFramework/GeneratedCode/MolarEnergy/UnitsNet.NanoFramework.MolarEnergy.nuspec # UnitsNet.NanoFramework/GeneratedCode/MolarEntropy/UnitsNet.NanoFramework.MolarEntropy.nuspec # UnitsNet.NanoFramework/GeneratedCode/MolarFlow/UnitsNet.NanoFramework.MolarFlow.nuspec # UnitsNet.NanoFramework/GeneratedCode/MolarMass/UnitsNet.NanoFramework.MolarMass.nuspec # UnitsNet.NanoFramework/GeneratedCode/Molarity/UnitsNet.NanoFramework.Molarity.nuspec # UnitsNet.NanoFramework/GeneratedCode/Permeability/UnitsNet.NanoFramework.Permeability.nuspec # UnitsNet.NanoFramework/GeneratedCode/Permittivity/UnitsNet.NanoFramework.Permittivity.nuspec # UnitsNet.NanoFramework/GeneratedCode/PorousMediumPermeability/UnitsNet.NanoFramework.PorousMediumPermeability.nuspec # UnitsNet.NanoFramework/GeneratedCode/Power/UnitsNet.NanoFramework.Power.nuspec # UnitsNet.NanoFramework/GeneratedCode/PowerDensity/UnitsNet.NanoFramework.PowerDensity.nuspec # UnitsNet.NanoFramework/GeneratedCode/PowerRatio/UnitsNet.NanoFramework.PowerRatio.nuspec # UnitsNet.NanoFramework/GeneratedCode/Pressure/UnitsNet.NanoFramework.Pressure.nuspec # UnitsNet.NanoFramework/GeneratedCode/PressureChangeRate/UnitsNet.NanoFramework.PressureChangeRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/Properties/AssemblyInfo.cs # UnitsNet.NanoFramework/GeneratedCode/RadiationEquivalentDose/UnitsNet.NanoFramework.RadiationEquivalentDose.nuspec # UnitsNet.NanoFramework/GeneratedCode/RadiationEquivalentDoseRate/UnitsNet.NanoFramework.RadiationEquivalentDoseRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/RadiationExposure/UnitsNet.NanoFramework.RadiationExposure.nuspec # UnitsNet.NanoFramework/GeneratedCode/Radioactivity/UnitsNet.NanoFramework.Radioactivity.nuspec # UnitsNet.NanoFramework/GeneratedCode/Ratio/UnitsNet.NanoFramework.Ratio.nuspec # UnitsNet.NanoFramework/GeneratedCode/RatioChangeRate/UnitsNet.NanoFramework.RatioChangeRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/ReactiveEnergy/ReactiveEnergy.nfproj # UnitsNet.NanoFramework/GeneratedCode/ReactiveEnergy/UnitsNet.NanoFramework.ReactiveEnergy.nuspec # UnitsNet.NanoFramework/GeneratedCode/ReactiveEnergy/packages.config # UnitsNet.NanoFramework/GeneratedCode/ReactivePower/ReactivePower.nfproj # UnitsNet.NanoFramework/GeneratedCode/ReactivePower/UnitsNet.NanoFramework.ReactivePower.nuspec # UnitsNet.NanoFramework/GeneratedCode/ReactivePower/packages.config # UnitsNet.NanoFramework/GeneratedCode/ReciprocalArea/UnitsNet.NanoFramework.ReciprocalArea.nuspec # UnitsNet.NanoFramework/GeneratedCode/ReciprocalLength/UnitsNet.NanoFramework.ReciprocalLength.nuspec # UnitsNet.NanoFramework/GeneratedCode/RelativeHumidity/UnitsNet.NanoFramework.RelativeHumidity.nuspec # UnitsNet.NanoFramework/GeneratedCode/RotationalAcceleration/UnitsNet.NanoFramework.RotationalAcceleration.nuspec # UnitsNet.NanoFramework/GeneratedCode/RotationalSpeed/UnitsNet.NanoFramework.RotationalSpeed.nuspec # UnitsNet.NanoFramework/GeneratedCode/RotationalStiffness/UnitsNet.NanoFramework.RotationalStiffness.nuspec # UnitsNet.NanoFramework/GeneratedCode/RotationalStiffnessPerLength/UnitsNet.NanoFramework.RotationalStiffnessPerLength.nuspec # UnitsNet.NanoFramework/GeneratedCode/Scalar/UnitsNet.NanoFramework.Scalar.nuspec # UnitsNet.NanoFramework/GeneratedCode/SolidAngle/UnitsNet.NanoFramework.SolidAngle.nuspec # UnitsNet.NanoFramework/GeneratedCode/SpecificEnergy/UnitsNet.NanoFramework.SpecificEnergy.nuspec # UnitsNet.NanoFramework/GeneratedCode/SpecificEntropy/UnitsNet.NanoFramework.SpecificEntropy.nuspec # UnitsNet.NanoFramework/GeneratedCode/SpecificFuelConsumption/UnitsNet.NanoFramework.SpecificFuelConsumption.nuspec # UnitsNet.NanoFramework/GeneratedCode/SpecificVolume/UnitsNet.NanoFramework.SpecificVolume.nuspec # UnitsNet.NanoFramework/GeneratedCode/SpecificWeight/UnitsNet.NanoFramework.SpecificWeight.nuspec # UnitsNet.NanoFramework/GeneratedCode/Speed/UnitsNet.NanoFramework.Speed.nuspec # UnitsNet.NanoFramework/GeneratedCode/StandardVolumeFlow/UnitsNet.NanoFramework.StandardVolumeFlow.nuspec # UnitsNet.NanoFramework/GeneratedCode/Temperature/UnitsNet.NanoFramework.Temperature.nuspec # UnitsNet.NanoFramework/GeneratedCode/TemperatureChangeRate/UnitsNet.NanoFramework.TemperatureChangeRate.nuspec # UnitsNet.NanoFramework/GeneratedCode/TemperatureDelta/UnitsNet.NanoFramework.TemperatureDelta.nuspec # UnitsNet.NanoFramework/GeneratedCode/TemperatureGradient/UnitsNet.NanoFramework.TemperatureGradient.nuspec # UnitsNet.NanoFramework/GeneratedCode/ThermalConductivity/UnitsNet.NanoFramework.ThermalConductivity.nuspec # UnitsNet.NanoFramework/GeneratedCode/ThermalInsulance/UnitsNet.NanoFramework.ThermalInsulance.nuspec # UnitsNet.NanoFramework/GeneratedCode/ThermalResistance/ThermalResistance.nfproj # UnitsNet.NanoFramework/GeneratedCode/ThermalResistance/packages.config # UnitsNet.NanoFramework/GeneratedCode/Torque/UnitsNet.NanoFramework.Torque.nuspec # UnitsNet.NanoFramework/GeneratedCode/TorquePerLength/TorquePerLength.nfproj # UnitsNet.NanoFramework/GeneratedCode/TorquePerLength/UnitsNet.NanoFramework.TorquePerLength.nuspec # UnitsNet.NanoFramework/GeneratedCode/TorquePerLength/packages.config # UnitsNet.NanoFramework/GeneratedCode/Turbidity/UnitsNet.NanoFramework.Turbidity.nuspec # UnitsNet.NanoFramework/GeneratedCode/VitaminA/UnitsNet.NanoFramework.VitaminA.nuspec # UnitsNet.NanoFramework/GeneratedCode/Volume/UnitsNet.NanoFramework.Volume.nuspec # UnitsNet.NanoFramework/GeneratedCode/VolumeConcentration/UnitsNet.NanoFramework.VolumeConcentration.nuspec # UnitsNet.NanoFramework/GeneratedCode/VolumeFlow/UnitsNet.NanoFramework.VolumeFlow.nuspec # UnitsNet.NanoFramework/GeneratedCode/VolumeFlowPerArea/UnitsNet.NanoFramework.VolumeFlowPerArea.nuspec # UnitsNet.NanoFramework/GeneratedCode/VolumePerLength/UnitsNet.NanoFramework.VolumePerLength.nuspec # UnitsNet.NanoFramework/GeneratedCode/VolumetricHeatCapacity/UnitsNet.NanoFramework.VolumetricHeatCapacity.nuspec # UnitsNet.NanoFramework/GeneratedCode/WarpingMomentOfInertia/UnitsNet.NanoFramework.WarpingMomentOfInertia.nuspec # UnitsNet.NumberExtensions.Tests/UnitsNet.NumberExtensions.Tests.csproj # UnitsNet.NumberExtensions/UnitsNet.NumberExtensions.csproj # UnitsNet.Serialization.JsonNet.Tests/UnitsNet.Serialization.JsonNet.Tests.csproj # UnitsNet.Serialization.JsonNet/UnitsNet.Serialization.JsonNet.csproj # UnitsNet.Serialization.JsonNet/UnitsNetBaseJsonConverter.cs # UnitsNet.Tests/GeneratedCode/TestsBase/AreaMomentOfInertiaTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/DensityTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/EntropyTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/MolarEntropyTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/SpecificEntropyTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/SpecificFuelConsumptionTestsBase.g.cs # UnitsNet.Tests/GeneratedCode/TestsBase/WarpingMomentOfInertiaTestsBase.g.cs # UnitsNet.Tests/QuantityParserTests.cs # UnitsNet.Tests/UnitParserTests.cs # UnitsNet.Tests/UnitsNet.Tests.csproj # UnitsNet/CustomCode/UnitParser.cs # UnitsNet/GeneratedCode/Resources/SpecificEntropy.restext # UnitsNet/GeneratedCode/Resources/SpecificFuelConsumption.restext # UnitsNet/UnitsNet.csproj
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #1533
Related #1200
Branched out
master
tomaintenance/v5
and mergingrelease/v6
intomaster
.From now on, v6 code base is the main branch although it is still in prerelease and still needs a bit more work before the first release.