問題タブ [multitargeting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
158 参照

c# - #if NET6_0_OR_GREATER を使用して BenchmarkDotNet の実行からベンチマーク メソッドを除外することは可能ですか?

BenchmarkDotNet で使用する、net48およびのマルチターゲットのベンチマークを作成net6.0していて、それらのベンチマークの 1 つがターゲットに対してのみコンパイルできるとしnet6.0ます。

当然行うべきことは、次のようなものを使用して、特定のベンチマークをnet48ビルドから除外することです。

残念ながら、これは機能しません。機能しない方法はTargetFrameworks、プロジェクト ファイルのプロパティで指定されたターゲットの順序によって異なります。

net6.0それが最初になるようにフレームワークを注文すると<TargetFrameworks>net6.0;net48</TargetFrameworks>(上記の例で)、UsingSpan()メソッドは両方のターゲットに含まれ、ターゲットの BenchmarkDotNet ビルド エラーが発生し、次のnet48ように出力されます。

一方、フレームワークをnet48最初に並べると<TargetFrameworks>net48;net6.0</TargetFrameworks>(上記の例)、UsingSpan()メソッドは両方のターゲットに対して除外され、次のような出力が得られます。

この問題を解決するには、プロジェクトを単一ターゲットにし、プロジェクト ファイルを編集してフレームワークを個別にターゲットにし、ターゲットごとにベンチマークを個別に実行する必要があります。

マルチターゲット プロジェクトでこれを機能させる方法はありますか?


完全を期すために、問題を示す完全にコンパイル可能なテスト アプリを次に示します。Visual Studio 2022 を使用しています。

プロジェクト ファイル:

"Program.cs" ファイル:

0 投票する
1 に答える
22 参照

debugging - 「このプロジェクトをデバッグするには、「マネージド (CoreCLR)」デバッガーを使用するように構成してください。」.NET Core でマルチ ターゲット フレームワークをデバッグしようとするとき

私は Visual Studio 2019 を使用しており、.NET Framework 4.72 および .NET Core 5.0 をターゲットとするマルチ ターゲット フレームワークを使用しています。

マルチターゲット .csproj は次のように構成されます。

.NET Core 実行可能ファイルをデバッグしようとすると、次のエラーが発生します。

致命的なエラーが発生したため、デバッグを終了する必要があります。デバッガーはデスクトップ CLR (.NET Framework) マネージ デバッガーを使用するように構成されていましたが、ターゲット プロセスは CoreCLR (.NET Core) ランタイムを読み込みました。このプロジェクトをデバッグするには、「マネージド (CoreCLR)」デバッガーを使用するように構成します。