web-dev-qa-db-ja.com

Microsoft.CSharp.Core.targetsがありません

ビルドツール2017を使用してTFS2017 Update 3でWebサービスプロジェクトをビルドしています。次のエラーが発生します

C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.CSharp.CurrentVersion.targets(322,5):エラーMSB4019:インポートされたプロジェクト "C:\ Program Files(x86 )\ Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\Microsoft.CSharp.Core.targets "が見つかりませんでした。宣言内のパスが正しいこと、およびファイルがディスク上に存在することを確認してください。

このエラーを修正するには、どのような手順が必要ですか?

7
doorman

TFS2018にアップデートして問題が解決しました。

0
doorman

私の場合、既存のSolutionファイルを開きます( .sln 拡張子)、不足している依存関係をすべてインストールしました。

それ以外の場合は、 nuget.org で不足しているターゲットパッケージを手動で確認してインストールします(例: MSBuild.Microsoft.VisualStudio.Web.targets )。

4
kenorb

このように GitHubの問題 の場合、$(RoslynTargetsPath)を設定する必要があります。

マシンにMSBuildがインストールされていて、テストがVisual Studio Developerコマンドプロンプトで実行されている場合は、何もする必要はありません。ただし、MSBuild 15.0がレジストリに配置されなくなったため、MSBuildが自分自身を見つけることができなくなりました。これは、複数の共存インストールを行うことができるVisual Studioの義務によるものです。この場合のMSBuildは、Visual Studioインスタンスごとに1回インストールされます。 MSBuildは、VSコマンドプロンプトによって設定された環境変数を調べることで、自分自身を見つけます。

パッケージとプロジェクトの完全な評価を行うために必要な他のすべてのパッケージを組み合わせてMSBuildを完全に再配布する場合は、プロジェクトをロードする前にRoslynTargetsPathを設定する必要があります。すべてのパッケージの<contentFiles />が出力ディレクトリのルートに移動し、特定のパッケージのサブディレクトリを指定できないため、これはNuGetの問題であると主張できます。

2
kenorb

まず、TFSビルドサービスアカウントを使用して、ビルドエージェントでmsbuildコマンドを直接使用することをお勧めします。これは、問題がエージェント環境またはTFSビルド定義に関連している場合に絞り込みます。

エラー情報によると、パスC:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\Microsoft.CSharp.Core.targetsはVisual Studio 2017のパスを探しています。

ただし、ビルドツールの場合、パスは異なりますC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn

ビルドエージェントにVS2017をインストールしていないようです。これが問題の根本的な原因である可能性があります。

最も簡単な解決策は、ビルドエージェントにVS2017をインストールすることです。これらの新しい機能をキャプチャするには、ビルドエージェントを再構成するか、ビルドエージェントサービスを再起動する必要があります。それ以外の場合は、.csprojプロジェクトファイルの対応するインポートセクションを変更する必要があります。

1
PatrickLu-MSFT