2017-08-29 17 views
0

新しい.NET Standardクラスライブラリプロジェクトを作成した後、BeforeBuild msbuildタスクをオーバーライドしたいと思います。以前は、.csprojファイルをアンロードして編集し、単に指示To modify your build process, add your task inside one of the targets below and uncomment it.に従って、私のロジックをテンプレートに追加しました。新しい.NET Standardプロジェクトには、そのような指示は含まれていません。VS 2017 .NET Standard C#プロジェクトの `BeforeBuild` msbuildタスクをオーバーライドするにはどうすればいいですか?

以前に使用されていたタスクを単に追加するだけで効果がありません。その理由は、プロジェクトディレクトリで実行されたdotnet msbuild /ppの出力を調べることでわかります。私が追加したタスクは、タスクが既に存在するかどうかを確認するチェックがないように見えるので、後で統一された出力に再宣言されます。

herehereのドキュメントには、プロジェクトファイルのmsbuild拡張は含まれていません。

+1

これはあなたにすべての使用ですか? https://stackoverflow.com/questions/43921992/how-can-i-use-beforebuild-and-afterbuild-targets-with-visual-studio-2017 –

+0

はい、あります!本当にありがとう、ありがとう! –

+0

タスクのようなターゲットや実行コマンドを作成するのは面白いですか? (ビルドスクリプトの前/後)。 VS 2017の15.3アップデートには、新しいターゲットが自動的に追加され、正しく配線されています。 –

答えて

0

動作が変更されました。

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

はあなたがBeforeBuildを上書きしたい場合は、手動でSDKの小道具や目標をインポートする必要がありますが、これは推奨されません

<Project> 
    <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> 
    ... 
    <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> 
</Project> 

に展開されます。推奨される解決策は、BeforeTargets="Build"でターゲットを作成することです。

編集:ここSDKベースのプロジェクトにBeforeBuildAfterBuildについての議論がありますhttps://github.com/Microsoft/msbuild/issues/1680

+0

2番目のインポートは代わりに "Sdk.targets"にする必要があります。それを更新しました。 –

+0

ありがとうございます。コピー貼り間違いだった。 –

関連する問題