Skip to content

Commit fc242d0

Browse files
committed
Fixing mapping of ctor parameters named eactly the same as members, re: #211 / Moving LangVersion to Build.Directory.props / Performance tweaks / Updating NuGet packages
1 parent 4b76ad8 commit fc242d0

File tree

25 files changed

+84
-53
lines changed

25 files changed

+84
-53
lines changed

AgileMapper.PerformanceTester.Net461/AgileMapper.PerformanceTester.Net461.csproj

+4-4
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@
3434
<WarningLevel>4</WarningLevel>
3535
</PropertyGroup>
3636
<ItemGroup>
37-
<Reference Include="AgileObjects.NetStandardPolyfills, Version=1.5.0.0, Culture=neutral, PublicKeyToken=06131ac1c008ad4e, processorArchitecture=MSIL">
38-
<HintPath>..\packages\AgileObjects.NetStandardPolyfills.1.5.0\lib\net40\AgileObjects.NetStandardPolyfills.dll</HintPath>
37+
<Reference Include="AgileObjects.NetStandardPolyfills, Version=1.6.0.0, Culture=neutral, PublicKeyToken=06131ac1c008ad4e, processorArchitecture=MSIL">
38+
<HintPath>..\packages\AgileObjects.NetStandardPolyfills.1.6.0\lib\net40\AgileObjects.NetStandardPolyfills.dll</HintPath>
3939
</Reference>
40-
<Reference Include="AgileObjects.ReadableExpressions, Version=2.6.0.0, Culture=neutral, PublicKeyToken=9f54ad81db69da8e, processorArchitecture=MSIL">
41-
<HintPath>..\packages\AgileObjects.ReadableExpressions.2.6.0\lib\net40\AgileObjects.ReadableExpressions.dll</HintPath>
40+
<Reference Include="AgileObjects.ReadableExpressions, Version=3.2.0.0, Culture=neutral, PublicKeyToken=9f54ad81db69da8e, processorArchitecture=MSIL">
41+
<HintPath>..\packages\AgileObjects.ReadableExpressions.3.2.0\lib\net40\AgileObjects.ReadableExpressions.dll</HintPath>
4242
</Reference>
4343
<Reference Include="AutoMapper, Version=7.0.1.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
4444
<HintPath>..\packages\AutoMapper.7.0.1\lib\net45\AutoMapper.dll</HintPath>

AgileMapper.PerformanceTester.Net461/packages.config

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="AgileObjects.NetStandardPolyfills" version="1.5.0" targetFramework="net461" />
4-
<package id="AgileObjects.ReadableExpressions" version="2.6.0" targetFramework="net461" />
3+
<package id="AgileObjects.NetStandardPolyfills" version="1.6.0" targetFramework="net461" />
4+
<package id="AgileObjects.ReadableExpressions" version="3.2.0" targetFramework="net461" />
55
<package id="AutoMapper" version="7.0.1" targetFramework="net452" />
66
<package id="Expressmapper" version="1.9.1" targetFramework="net452" requireReinstallation="true" />
77
<package id="Mapster" version="3.3.1" targetFramework="net452" />

AgileMapper.UnitTests.Net35/AgileMapper.UnitTests.Net35.csproj

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>net35</TargetFramework>
5-
<LangVersion>8.0</LangVersion>
65
<AssemblyName>AgileObjects.AgileMapper.UnitTests.Net35</AssemblyName>
76
<RootNamespace>AgileObjects.AgileMapper.UnitTests.Net35</RootNamespace>
87
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

AgileMapper.UnitTests.NetCore/AgileMapper.UnitTests.NetCore.csproj

-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>netcoreapp1.0</TargetFramework>
5-
<RuntimeFrameworkVersion>1.1.13</RuntimeFrameworkVersion>
6-
<LangVersion>8.0</LangVersion>
75
<AssemblyName>AgileObjects.AgileMapper.UnitTests.NetCore</AssemblyName>
86
<RootNamespace>AgileObjects.AgileMapper.UnitTests</RootNamespace>
97
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

AgileMapper.UnitTests.NetCore2/AgileMapper.UnitTests.NetCore2.csproj

-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>netcoreapp2.2</TargetFramework>
5-
<RuntimeFrameworkVersion>2.2.7</RuntimeFrameworkVersion>
6-
<LangVersion>8.0</LangVersion>
75
<AssemblyName>AgileObjects.AgileMapper.UnitTests.NetCore2</AssemblyName>
86
<RootNamespace>AgileObjects.AgileMapper.UnitTests</RootNamespace>
97
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

AgileMapper.UnitTests.NetCore3/AgileMapper.UnitTests.NetCore3.csproj

-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>netcoreapp3.1</TargetFramework>
5-
<RuntimeFrameworkVersion>3.1.4</RuntimeFrameworkVersion>
6-
<LangVersion>8.0</LangVersion>
75
<AssemblyName>AgileObjects.AgileMapper.UnitTests.NetCore3</AssemblyName>
86
<RootNamespace>AgileObjects.AgileMapper.UnitTests</RootNamespace>
97
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

AgileMapper.UnitTests.NonParallel/AgileMapper.UnitTests.NonParallel.csproj

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>net461</TargetFramework>
5-
<LangVersion>8.0</LangVersion>
65
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
76
<AssemblyName>AgileObjects.AgileMapper.UnitTests.NonParallel</AssemblyName>
87
<RootNamespace>AgileObjects.AgileMapper.UnitTests.NonParallel</RootNamespace>

AgileMapper.UnitTests.Orms.Ef5.LocalDb/AgileMapper.UnitTests.Orms.Ef5.LocalDb.csproj

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>net461</TargetFramework>
5-
<LangVersion>8.0</LangVersion>
65
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
76
<AssemblyName>AgileObjects.AgileMapper.UnitTests.Orms.Ef5.LocalDb</AssemblyName>
87
<RootNamespace>AgileObjects.AgileMapper.UnitTests.Orms.Ef5.LocalDb</RootNamespace>

AgileMapper.UnitTests.Orms.Ef5/AgileMapper.UnitTests.Orms.Ef5.csproj

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>net461</TargetFramework>
5-
<LangVersion>8.0</LangVersion>
65
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
76
<AssemblyName>AgileObjects.AgileMapper.UnitTests.Orms.Ef5</AssemblyName>
87
<RootNamespace>AgileObjects.AgileMapper.UnitTests.Orms.Ef5</RootNamespace>
@@ -16,7 +15,7 @@
1615

1716
<ItemGroup>
1817
<Reference Include="System" />
19-
<PackageReference Include="Effort" Version="2.2.10" />
18+
<PackageReference Include="Effort" Version="2.2.16" />
2019
<PackageReference Include="EntityFramework" Version="5.0.0" />
2120
<PackageReference Include="xunit" Version="2.4.1" />
2221
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">

AgileMapper.UnitTests.Orms.Ef6.LocalDb/AgileMapper.UnitTests.Orms.Ef6.LocalDb.csproj

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>net461</TargetFramework>
5-
<LangVersion>8.0</LangVersion>
65
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
76
<AssemblyName>AgileObjects.AgileMapper.UnitTests.Orms.Ef6.LocalDb</AssemblyName>
87
<RootNamespace>AgileObjects.AgileMapper.UnitTests.Orms.Ef6.LocalDb</RootNamespace>

AgileMapper.UnitTests.Orms.Ef6/AgileMapper.UnitTests.Orms.Ef6.csproj

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>net461</TargetFramework>
5-
<LangVersion>8.0</LangVersion>
65
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
76
<AssemblyName>AgileObjects.AgileMapper.UnitTests.Orms.Ef6</AssemblyName>
87
<RootNamespace>AgileObjects.AgileMapper.UnitTests.Orms.Ef6</RootNamespace>
@@ -16,7 +15,7 @@
1615

1716
<ItemGroup>
1817
<Reference Include="System" />
19-
<PackageReference Include="Effort.EF6" Version="2.2.10" />
18+
<PackageReference Include="Effort.EF6" Version="2.2.16" />
2019
<PackageReference Include="EntityFramework" Version="6.4.4" />
2120
<PackageReference Include="xunit" Version="2.4.1" />
2221
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">

AgileMapper.UnitTests.Orms.EfCore1/AgileMapper.UnitTests.Orms.EfCore1.csproj

-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>netcoreapp1.0</TargetFramework>
5-
<RuntimeFrameworkVersion>1.1.13</RuntimeFrameworkVersion>
6-
<LangVersion>8.0</LangVersion>
75
<AssemblyName>AgileObjects.AgileMapper.UnitTests.Orms.EfCore1</AssemblyName>
86
<RootNamespace>AgileObjects.AgileMapper.UnitTests.Orms.EfCore1</RootNamespace>
97
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

AgileMapper.UnitTests.Orms.EfCore2/AgileMapper.UnitTests.Orms.EfCore2.csproj

-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>netcoreapp2.2</TargetFramework>
5-
<RuntimeFrameworkVersion>2.2.7</RuntimeFrameworkVersion>
6-
<LangVersion>8.0</LangVersion>
75
<AssemblyName>AgileObjects.AgileMapper.UnitTests.Orms.EfCore2</AssemblyName>
86
<RootNamespace>AgileObjects.AgileMapper.UnitTests.Orms.EfCore2</RootNamespace>
97
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

AgileMapper.UnitTests.Orms/AgileMapper.UnitTests.Orms.csproj

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>net461;netstandard1.3</TargetFrameworks>
5-
<LangVersion>8.0</LangVersion>
65
<AssemblyName>AgileObjects.AgileMapper.UnitTests.Orms</AssemblyName>
76
<RootNamespace>AgileObjects.AgileMapper.UnitTests.Orms</RootNamespace>
87
<DebugType>full</DebugType>

AgileMapper.UnitTests/AgileMapper.UnitTests.csproj

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
<PropertyGroup>
44
<TargetFramework>net461</TargetFramework>
5-
<LangVersion>8.0</LangVersion>
65
<AssemblyName>AgileObjects.AgileMapper.UnitTests</AssemblyName>
76
<RootNamespace>AgileObjects.AgileMapper.UnitTests</RootNamespace>
87
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

AgileMapper.UnitTests/WhenMappingToConstructors.cs

+39-1
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,17 @@ public void ShouldUseAComplexTypeConstructorParameter()
8484
result.Value.Line1.ShouldBe("Over there");
8585
}
8686

87+
// See https://github.com/agileobjects/AgileMapper/issues/221
88+
[Fact]
89+
public void ShouldSupportExactMatchingConstructorsParameterNames()
90+
{
91+
var dto = new Issue221.ItemDto { A = 1, B = "two" };
92+
var item = Mapper.Map(dto).ToANew<Issue221.Item>();
93+
94+
item.A.ShouldBe(1);
95+
item.B.ShouldBe("two");
96+
}
97+
8798
[Fact]
8899
public void ShouldIgnoreConstructorsWithNoUseableDataSource()
89100
{
@@ -176,7 +187,7 @@ public void ShouldDeepCloneViaConstructor()
176187
result.PreferenceDtoList.First().SelectedOption.ShouldNotBeNull();
177188
result.PreferenceDtoList.Second().OptionList.ShouldHaveSingleItem();
178189
result.PreferenceDtoList.Second().SelectedOption.ShouldNotBeNull();
179-
190+
180191
result.Source.ShouldBe(Issue209.GridPreferenceCallerSource.ActivityRecord);
181192
}
182193
}
@@ -226,6 +237,33 @@ public MultipleUnusedConstructors(T1 value1, T2 value2)
226237
public T2 Value2 { get; set; }
227238
}
228239

240+
private static class Issue221
241+
{
242+
public class ItemDto
243+
{
244+
public int A { get; set; }
245+
246+
public string B { get; set; }
247+
}
248+
249+
public class Item
250+
{
251+
public Item() { }
252+
253+
// ReSharper disable InconsistentNaming
254+
public Item(int A, string B)
255+
{
256+
this.A = A;
257+
this.B = B;
258+
}
259+
// ReSharper restore InconsistentNaming
260+
261+
public int A { get; set; }
262+
263+
public string B { get; set; }
264+
}
265+
}
266+
229267
private class CopyConstructor
230268
{
231269
public CopyConstructor()

AgileMapper.sln.DotSettings

+2
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,7 @@
4444
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/UserRules/=NAMESPACE_005FALIAS/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
4545
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/UserRules/=XAML_005FFIELD/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
4646
<s:String x:Key="/Default/CodeStyle/Naming/XamlNaming/UserRules/=XAML_005FRESOURCE/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
47+
<s:Boolean x:Key="/Default/Environment/Filtering/ExcludeAttributeFilters/=AgileObjects_002EAgileMapper_002EExcludeFromCodeCoverageAttribute/@EntryIndexedValue">True</s:Boolean>
48+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EdotCover_002EIde_002ECore_002EFilterManagement_002EModel_002ESolutionFilterSettingsManagerMigrateSettings/@EntryIndexedValue">True</s:Boolean>
4749
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters /&gt;&lt;/data&gt;</s:String>
4850
<s:String x:Key="/Default/FilterSettingsManager/AttributeFilterXml/@EntryValue">&lt;data&gt;&lt;AttributeFilter ClassMask="AgileObjects.AgileMapper.ExcludeFromCodeCoverageAttribute" IsEnabled="True" /&gt;&lt;/data&gt;</s:String></wpf:ResourceDictionary>

AgileMapper/AgileMapper.csproj

+2-5
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,8 @@
2020
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netstandard1.0' ">$(PackageTargetFallback);dnxcore50</PackageTargetFallback>
2121
<PackageLicenseExpression>MIT</PackageLicenseExpression>
2222
<PackageIcon>./Icon.png</PackageIcon>
23-
<PackageReleaseNotes>- Adding .NET Standard 2.0 target
24-
- Support for configuring data sources by matcher, re: #208
25-
- Fixing potential cache threading issue, re: #212
26-
- Throwing ObjectDisposed on attempt to use disposed Mapper, re: #212
27-
- Improving target member selection, re: #209
23+
<PackageReleaseNotes>- Fixing exact-name-matching constructor parameter mapping, re: #221
24+
- Performance improvements
2825
</PackageReleaseNotes>
2926
</PropertyGroup>
3027

AgileMapper/DataSources/Factories/Mapping/QueryProjectionDataSourceFactory.cs

+4-6
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,10 @@ public QueryProjectionDataSourceFactory()
1313

1414
public override bool IsFor(IObjectMappingData mappingData)
1515
{
16-
var mapperData = mappingData.MapperData;
17-
18-
return mapperData.IsRoot &&
19-
mapperData.TargetMember.IsEnumerable &&
16+
return mappingData.IsRoot &&
2017
(mappingData.MappingContext.RuleSet.Name == Constants.Project) &&
21-
mapperData.SourceType.IsQueryable();
18+
mappingData.MapperData.TargetMember.IsEnumerable &&
19+
mappingData.MapperData.SourceType.IsQueryable();
2220
}
2321
}
24-
}
22+
}

AgileMapper/DataSources/Factories/Mapping/RootEnumMappingDataSourceFactory.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
{
33
using NetStandardPolyfills;
44
using ObjectPopulation;
5-
using ReadableExpressions.Extensions;
65

76
internal class RootEnumMappingDataSourceFactory : MappingDataSourceFactoryBase
87
{
@@ -12,6 +11,6 @@ public RootEnumMappingDataSourceFactory()
1211
}
1312

1413
public override bool IsFor(IObjectMappingData mappingData)
15-
=> mappingData.IsRoot && mappingData.MapperData.TargetType.GetNonNullableType().IsEnum();
14+
=> mappingData.IsRoot && mappingData.MappingTypes.TargetType.GetNonNullableType().IsEnum();
1615
}
17-
}
16+
}

AgileMapper/Extensions/Internal/EnumerableExtensions.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,9 @@ public static TResult[] ProjectToArray<TArg, TItem, TResult>(
168168
for (var i = 0; ;)
169169
{
170170
result[i] = projector.Invoke(argument, items[i]);
171+
++i;
171172

172-
if (++i == itemCount)
173+
if (i == itemCount)
173174
{
174175
return result;
175176
}

AgileMapper/Members/Member.cs

+8
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ internal class Member
1919
public const string RootSourceMemberName = "Source";
2020
public const string RootTargetMemberName = "Target";
2121

22+
private static readonly int _ctorParameterHashCode =
23+
MemberType.ConstructorParameter.GetHashCode();
24+
2225
private readonly IAccessFactory _accessFactory;
2326
private readonly int _hashCode;
2427

@@ -67,6 +70,11 @@ private Member(
6770
unchecked
6871
{
6972
_hashCode = (_hashCode * 397) ^ name.GetHashCode();
73+
74+
if (memberType == MemberType.ConstructorParameter)
75+
{
76+
_hashCode = (_hashCode * 397) ^ _ctorParameterHashCode;
77+
}
7078
}
7179

7280
JoiningName = (isRoot || this.IsEnumerableElement()) ? name : "." + name;

AgileMapper/Members/MemberExtensionMethods.cs

+14-9
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
using System.Linq.Expressions;
1313
#endif
1414
using System.Reflection;
15-
using Caching.Dictionaries;
1615
using Configuration;
1716
using Extensions;
1817
using Extensions.Internal;
@@ -254,12 +253,6 @@ public static Member[] RelativeTo(this Member[] memberChain, Member[] otherMembe
254253

255254
private delegate Expression PopulationFactory(Expression instance, Member member, Expression value);
256255

257-
private static readonly ISimpleDictionary<MemberType, PopulationFactory> _populationFactoriesByMemberType =
258-
new FixedSizeSimpleDictionary<MemberType, PopulationFactory>(3)
259-
.Add(MemberType.Field, AssignMember)
260-
.Add(MemberType.Property, AssignMember)
261-
.Add(MemberType.SetMethod, CallSetMethod);
262-
263256
private static Expression AssignMember(Expression instance, Member targetMember, Expression value)
264257
=> targetMember.GetAccess(instance).AssignTo(value);
265258

@@ -270,12 +263,24 @@ private static Expression CallSetMethod(Expression instance, Member targetMember
270263

271264
public static Expression GetPopulation(this Member targetMember, Expression instance, Expression value)
272265
{
273-
var populationFactory = _populationFactoriesByMemberType[targetMember.MemberType];
266+
var populationFactory = GetPopulationFactory(targetMember);
274267
var population = populationFactory.Invoke(instance, targetMember, value);
275268

276269
return population;
277270
}
278271

272+
private static PopulationFactory GetPopulationFactory(Member targetMember)
273+
{
274+
return targetMember.MemberType switch
275+
{
276+
MemberType.Field => AssignMember,
277+
MemberType.Property => AssignMember,
278+
MemberType.SetMethod => CallSetMethod,
279+
_ => throw new NotSupportedException(
280+
"No PopulationFactory defined for MemberType")
281+
};
282+
}
283+
279284
public static QualifiedMember ToSourceMemberOrNull(
280285
this Expression memberAccess,
281286
MapperContext mapperContext)
@@ -323,7 +328,7 @@ public static QualifiedMember ToSourceMember(
323328
nonMemberAction ?? ThrowIfUnsupported,
324329
mapperContext);
325330
}
326-
331+
327332
#if NET35
328333
public static QualifiedMember ToTargetMemberOrNull(this LinqExp.LambdaExpression memberAccess, MapperContext mapperContext)
329334
=> memberAccess.ToDlrExpression().ToTargetMemberOrNull(mapperContext);

AgileMapper/ObjectPopulation/ComplexTypes/TargetObjectResolutionFactory.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public static Expression GetObjectResolution(
1919
bool assignTargetObject = false)
2020
{
2121
return GetObjectResolution(
22-
(md, mps) => construction,
22+
(_, _) => construction,
2323
mappingData,
2424
null,
2525
false,

Directory.Build.props

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
<Company>AgileObjects Ltd</Company>
55
<Product>AgileObjects.AgileMapper</Product>
66
<Authors>Steve Wilkes</Authors>
7-
<Copyright>Copyright © AgileObjects Ltd 2021</Copyright>
7+
<Copyright>Copyright © AgileObjects Ltd 2022</Copyright>
88
<NeutralResourcesLanguage>en</NeutralResourcesLanguage>
99
<AssemblyOriginatorKeyFile>..\AgileMapper.snk</AssemblyOriginatorKeyFile>
1010
<SignAssembly>true</SignAssembly>
1111
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
1212
<RepositoryType>git</RepositoryType>
1313
<RepositoryUrl>https://github.com/AgileObjects/AgileMapper</RepositoryUrl>
14+
<LangVersion>latest</LangVersion>
1415
<Version>1.8.0</Version>
1516
<AssemblyVersion>1.8.0.0</AssemblyVersion>
1617
<FileVersion>1.8.0.0</FileVersion>

0 commit comments

Comments
 (0)