CsvHelper icon indicating copy to clipboard operation
CsvHelper copied to clipboard

Unhandled Exception: System.TypeLoadException: Could not load type 'System.ValueTuple`2' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

Open GanZhiXiong opened this issue 2 years ago • 2 comments

my environment

  • use rider develop
  • develop computer is win11

error

There is no problem with the computer I developed, but on another Windows Server 2016 Standard, the following error is reported:

Unhandled Exception: System.TypeLoadException: Could not load type 'System.ValueTuple`2' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
   at CsvHelper.CsvReader..ctor(IParser parser)
   at CsvHelper.CsvReader..ctor(TextReader reader, CultureInfo culture, Boolean leaveOpen)

Windows Server 2016 Standard .Net Version: image

my code

            using (var reader = new StreamReader("2.csv"))
            using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
            {
                // var records = csv.GetRecords<Foo>();
                // records = records.ToList();

                csv.Read();
                csv.Read();
                csv.Read();
                // csv.Read();
                csv.ReadHeader();
                var records = new List<Foo>();
                while (csv.Read())
                {
                    var record = csv.GetRecord<Foo>();
                    records.Add(record);
                    Console.WriteLine($"{record.Id}, {record.Name}, {record.Result}");
                    // Do something with the record.
                }
            }

GanZhiXiong avatar Nov 06 '22 03:11 GanZhiXiong

I've seen this sort of error a couple of times - my guess is that installing .NET Framework 4.7.2 (or higher) on the server should do the trick.

FrankNanninga avatar Nov 08 '22 18:11 FrankNanninga

@FrankNanninga Do you know why that would be?

I have these settings for net45.

<!-- .NET 4.5 -->
<ItemGroup Condition="'$(TargetFramework)' == 'net45'">
	<PackageReference Include="Microsoft.CSharp" Version="4.3.0" />
	<PackageReference Include="System.Memory" Version="4.5.0" />
	<PackageReference Include="System.ValueTuple" Version="4.3.0" />
</ItemGroup>

It look like net45 is covered. https://www.nuget.org/packages/System.ValueTuple/4.3.0#supportedframeworks-body-tab

JoshClose avatar Nov 08 '22 23:11 JoshClose