Csvhelper: オブジェクト初期化子を使用して.net標準2.0でCsvConfigurationインスタンスを作成できません

作成日 2021年01月18日  ·  5コメント  ·  ソース: JoshClose/CsvHelper

バグを説明する
20.0.0では、オブジェクト初期化子を使用してCsvConfigurationを作成するか、「with」ステートメントを使用すると、MissingMethod例外がスローされます。

再現するには

  1. .Net Standard 2.0librarayを作成します
  2. CsvHelper20.0.0を参照してください
  3. コンソールプロジェクトの作成(.Net 5?)
  4. .Net Standard2.0ライブラリ内にCsvConfigurationを作成します
  5. メインプロジェクトまたは他の場所から上記のメソッドを呼び出します

予想される行動
オブジェクト初期化子を使用してCsvConfigurationを作成できます

スクリーンショット
image

追加のコンテキスト
ソース:
Temp.Lib:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <LangVersion>9.0</LangVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="CsvHelper" Version="20.0.0" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="IsExternalInit" Version="1.0.0" PrivateAssets="all" />
  </ItemGroup>

</Project>
using CsvHelper.Configuration;
using System.Globalization;

namespace Temp.Lib
{
    public static class ConfigCreator
    {
        public static CsvConfiguration CreateConfig() => new(CultureInfo.InvariantCulture) { Delimiter = ";" };
    }
}



md5-c1177b2e3f8e3b3152d9b2f87ffae510



```csharp
using System;
using Temp.Lib;

namespace Temp
{
    public static class Program
    {
        public static void Main()
        {
            ConfigCreator.CreateConfig();

            Console.WriteLine("Config created successfully");
        }
    }
}

提案
たぶん、initのみのプロパティを持つレコードの代わりに、get onlyプロパティとオプションのコンストラクターパラメーターを持つレコードを使用しますか?

bug

全てのコメント5件

私はライブラリを使用して機能を古いバージョンに移行していました。 動作しないようです。 私はソースでそれをやっただけで、今はうまくいくようです。 これは、数時間以内にリリースされる次のバージョンに含めます。 私は人々がそれで見ている他の問題を修正したいと思います。

私は同じナゲットを使用しましたが、それを使って大規模なテストを行っていませんでした。 CsvConfigurationをレコードとして保持したい場合は、それを機能させてみてください。 initにnugetを使用せずに、プロジェクト内にソースコードディレクトリを配置して、クラスを内部にすることができます。

はい、私はそれを試しました、そしてあなたの例はそれでうまくいきます。 :)

ああ、すみません、あなたのコメントを読み間違えました。 迅速な対応と修正に感謝します!

21.0.0で修正する必要があります。 https://www.nuget.org/packages/CsvHelper/21.0.0

このページは役に立ちましたか?
0 / 5 - 0 評価