web-dev-qa-db-ja.com

cscエラーcs0006メタデータファイルが見つかりませんでした。TFS2012で.net 3.5アプリケーションを構築しています

TFS 2008からTFS 2012にアップグレードしています。アプリケーションの大部分は.net 3.5アプリケーションです。
TFS 2012環境をセットアップし、移行プロセスを完了しました。 .net 3.5アプリケーションをビルドしようとすると、エラーが発生します。

csc error cs0006 metadata file could not be found........

.net 3.5アプリケーションを取得し、それを.net 4.xにアップグレードしてからビルドを再度実行すると、正常に機能します。

この移行中に所有しているすべてのアプリケーションをアップグレードすることはできません。 3.5をサポートするために、移行またはビルドボックスで不足している可能性のあるものはありますか?

ビルドサーバーにVS 2008、2010、2012がインストールされています。 .netフレームワークがインストールされているなど。

どんな援助も役に立ちます。

33
Kevin Price

ソリューションエクスプローラーでプロジェクトを右クリックし、[プロジェクトの依存関係]を選択すると、プロジェクトの依存関係とプロジェクトのビルド順序をVisual Studio 2012で指定できます。このアクションを実行すると、ソリューションファイルが修正されます。私の場合、ソリューションファイルを手動で編集せずにこの問題を修正できました。

15

これらの問題はブランチ間で切り替えられます(大幅な変更あり)。それが起こるとき、私は次をお勧めします:

  • Visual Studioを閉じます
  • W3wp.exeインスタンスを閉じます(偏執的で、ローカルIIS経由でホストしている場合のみ)
  • すべてのbinおよびobjフォルダーを検索して削除します
  • C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files \からすべての中間JITコンパイル済みアセンブリを削除します。

このセットに従うと、「クリーンソリューション」が行うべきことを行いますが、行いません。基本的に、どこでもキャッシュされている可能性のあるもの(これらの問題の最も一般的な原因)を削除しようとしています。

もちろん、あなたの走行距離は異なるかもしれませんが、120のプロジェクトと130万行のコードリファクタリングを行う私たちにとって、この問題は定期的に発生し、確実に解決します。

8
Paul Carroll

これは、Visual Studioソリューションファイルにプロジェクトの依存関係が含まれていないために発生したようです。プロジェクトGUIDを使用して依存関係を設定するには、ソリューションファイルを手動で編集する必要があることがわかりました。

たとえば、ソリューションファイルには次のようなものがあります。

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectA", "ProjectA\ProjectA.csproj", "{61C9C7C3-B5B4-4C00-8AE0-B49D21B3D77C}"
EndProject

依存関係が指定されていないことに注意してください。指定された追加のGUIDがProjectAが依存しているプロジェクトのGUIDである場合、このようにする必要がありました。

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectA", "ProjectA\ProjectA.csproj", "{61C9C7C3-B5B4-4C00-8AE0-B49D21B3D77C}"
    ProjectSection(ProjectDependencies) = postProject
        {EB576061-5081-4ED5-9146-1B20C893E51E} = {EB576061-5081-4ED5-9146-1B20C893E51E}
        {A469F4BA-8BAA-4F14-BFC8-4D49F93C3E40} = {A469F4BA-8BAA-4F14-BFC8-4D49F93C3E40}
        {03FAB21D-C077-499B-9B19-67971791D369} = {03FAB21D-C077-499B-9B19-67971791D369}
        {F5E0C7B8-36AD-46B0-A74D-9C48516E208A} = {F5E0C7B8-36AD-46B0-A74D-9C48516E208A}
    EndProjectSection
EndProject

詳細は post をご覧ください。

6
Nicholas Roeder

私の場合、プロジェクトの1つはビルドされていませんでしたが、エラーにはまったく言及されていませんでした。髪を引っ張って数時間後に F爆弾を落とす最終的に出力を注意深く見て、エラーがあることに気付きました:

enter image description here

そしてそれはそれでした。私はそれを修正し、すべてのエラーは消えました。しかし、好奇心got盛だったので、コードをコンパイルに失敗したコードに戻しました。ビルドを行ったところ、フレンドリーなビルドエラーが発生しました。何らかの理由でエラーが表示されていませんでした。理由はわかりません...

4
CodingYoshi

同様の問題がありました。私の場合、2つのステップで解決できました。最初に、[ソリューションのクリーンアップ]オプションを使用してソリューションをクリーンアップしました。その後、ソリューションがクリーンアップされた後、Microsoft.Aspnet.Mvcライブラリの古いバージョンがインストールされたことをデバッガーが検出しました。そこで、以下の行を使用して、ライブラリコンソールから新しいものをインストールしました。Install-Package Microsoft.Aspnet.Mvc -version 5.2.3.0 -projectname _____________ Install-Package Microsoft.Aspnet.Mvc -version 5.2.3.0 -projectname _____________

2
AGuler

各プロジェクト=>プロパティ画面でターゲットフレームワークのバージョンを確認します。参照プロジェクトまたはファイルで使用されているものよりも低い場合、コンパイラはフレームワークの上位バージョンを処理する方法を知らないため、エラーが発生します。
説明した内容から、フレームワークv4.0をターゲットとする依存関係があります。

プロジェクトがビルドされるまで、依存関係のターゲットフレームワークを1つずつ変更します。

サードパーティのクローズドソース依存関係の場合は、.net 3.5ターゲットを提供するよう依頼してください。


回避策はありません。

2
michal

私も同じエラーがありました。

修正は、パスをチェックすることでした。私のパスでは、1つのフォルダーの名前はabc%20ertです。これは、gitからスペースを同期することから来ました。 Visual Studioには、パスの%2に問題があります。これを削除することで問題は解決しました。

2

ASP.NETプロジェクトでC#7言語機能を使用しているときにこのエラーが発生しましたが、NuGetパッケージの最新バージョンがありませんでしたMicrosoft.Net.Compilersasp.netアプリケーションでc#7を有効にする で説明されています。

1
Bart Verkoeijen