問題タブ [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 投票する
0 に答える
113 参照

msbuild - マルチターゲット ビルドで $(OutputPath) を使用しますか?

マルチターゲット ビルドのコンテキストで $(OutputPath) 内のファイルに対して操作を実行するために、sdk スタイルのプロジェクトでカスタム ターゲットを作成する標準的な方法は何ですか? 私は net5 への移行のためにビルドをマルチターゲットしようとしていますが、これがいかに厄介であるかに驚いています。ビルドの一部としてファイルをコピーしたり、exe を実行したりするために $(OutputPath) に到達する必要があるさまざまなターゲットがあります。たとえば、次のようなターゲットです。

$(OutputPath) が実際に Foo.exe がある bin\debug に設定されているため、これはマルチターゲットのない sdk スタイルのプロジェクトで正常に機能しました。しかし、上記では、AppendTargetFrameworkToOutputPath が $(OutputPath) を bin\debug\net48 に設定する作業を行う前に、ItemGroup が評価されます。そのため、私の ItemGroup は bin\debug\net48 ではなく bin\debug で Foo.exe を探しています (これは $(TargetFramework) が定義されている内部ビルドでも当てはまります)。AppendTargetFrameworkToOutputPath に依存する代わりに、Directory.Build.props で $(OutputPath) を bin$(Configuration)$(TargetFramework) として自分で定義しようとしましたが、$(TargetFramework) は csproj コンテンツの後まで sdk によって設定されないためです。同じ問題が発生します ($(OutputPath) を使用する ItemGroup 内のパスは bin\debug\ に評価されます)。

いくつかの回避策を考案できますが、それらはすべて少しハックに思えます (たとえば、実行時に $(OutputPath) が完全に構築されるように、将来のターゲットの入力/出力用に ItemGroups を定義することだけが仕事である前のターゲットを定義します)。マルチターゲティングのドキュメントで、この機能を使用すると、ビルド プロセスの一部としてビルド アーティファクトを参照する能力が実際に台無しになるとは言及されていないようでした。

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

c# - マルチプラットフォーム プロジェクトに特定のプラットフォームへの参照を追加する

System.Diagnostics.EventLogマルチターゲットプロジェクトで使用することを理解しようとしています。ターゲットは次のとおりです。

  • .NET5
  • .NET フレームワーク 4.8

私のソリューションには 3 つのプロジェクトがあり、他の 2 つのプロジェクトではすべて正常に動作します。.NET 5を使用する必要があるため、問題を引き起こしているのは.NET 5System.Diagnostics.EventLogの参照です。.NET Framework 4.8では、名前空間は.EventLogSystem.Diagnostics.EventLogSystem.dll

このライブラリへの参照を.NET 5プロジェクトにのみ含め、4.8プロジェクトには含めない方法を探しています。

プロジェクトへの参照を追加すると、両方のターゲットに追加されるようです。.NET Framework 4.8 ではなく.NET 5に追加する方法はありますか?