を切り替える:NetCoreコマンドラインビルドとだから私は、次の構造を持つプロジェクト持って
syntax: Project (Assembly Name) - P1 (Assembly-1) - P2.A (Assembly-2) - P2.B (Assembly-2) - P3 (Assembly-3)
餌を容易にし、どこP2.AとP2を切り替えるようにした点そのうちを。 Bはどちらも同じアセンブリ名を持っています。
Proj依存関係は、P3が他のすべての依存関係になるようなものです。 P1はP2.A(餌)に依存するネット標準プロジェクトであり、アセンブリは期待通りにそれぞれのプラットフォームでP2.Bとスワップされます
今私が依存していないこの解決策ナゲットパッケージではなく、プロジェクトに直接、P1、P2.B、P3に依存するUnitTestプロジェクトがあります。
これをVisual Studioでコンパイルすると、期待通りに動作します(この部分でも、P2.Bのアセンブリが出力フォルダに最後に転送され、P1が依存するP2.Aではなく、どんな理由であれこれが働く)。しかし、私がちょうどコマンドラインからdotnet build
を実行しようとすると、それはerror : Cannot find project info for '**\P2.A.csproj'. This can indicate a missing project reference.
の行に沿って失敗します。私はどこかのアセンブリ名がプロジェクトP2.AとP2.Bの間で同じであると推測しています。 。
私が単体テストプロジェクトをP2.Bに応じて直接削除しても、それはコマンドラインからうまく動作しますが、それでもベイトDLLが残っています。
ビジュアルスタジオやコマンドラインと動作が異なる理由がわかりません。
私はまた、P2.Bへの直接の依存関係を削除し、代わりにAfterTargets = "Build"のmsbuild TargetをセットアップしてP2.Bのビルドをトリガし、それに応じて出力パスを提供するようにしました。ユニットテストプロジェクトの出力フォルダ。このようなことは、スイッチが発生し、dotnet build/test
が正常に動作する場所で機能します。指定されたランタイムでビルドすると失敗するerror : Assets file '**\P2.B\obj\project.assets.json' doesn't have a target for '.NETStandard,Version=v1.2/win10-x64'
ビルドターゲット設定後にカスタムMSBuildターゲットを削除した場合、ofcは正常に動作するP2.B
これを解決するためのあらゆる指針は非常に役に立ちます。
おかげ
それが助け場合、私は、他の誰かが餌とスイッチのため、同様の問題に実行されます念のためのVisual Studio 2017(15.4.1)DOTNETのSDK(2.0.2)
サンプルを作成しましたが、この問題を再現できませんでした。何か問題があったかどうかはわかりません。この問題を再現できるように簡単なテストサンプルを教えていただけますか? – Alex
@Judy soz私はこれを逃した。私は実際に2番目の問題が解決されたので、答えに言及したようにそのルートを経由しました。 – Viv