VS2008 SP1 を使用して C# でコーディングします。ソース管理やタスクなどに使用する Team System Server 2008 を実行するサーバーがあります。このサーバーは、 Team Buildのビルド マシンでもあります。これは長い間うまく機能しています。今まで。1 つの外部アセンブリへの参照を持つプロジェクトの 1 つをビルドしようとすると、次のエラー メッセージが表示されます(これは、チーム ビルドを介して発生する場合と、物理的にログオンして Visual Studio を介して通常のビルドを実行する場合の両方で発生します)。
C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : 警告 MSB3246:解決されたファイルのイメージが正しくないか、メタデータがないか、またはその他の理由でアクセスできません。ファイルまたはアセンブリ'C:\Program Files\Syncfusion\Essential Studio\7.1.0.21\Assemblies\3.5\Syncfusion.XlsIO.Base.dll' またはその依存関係の 1 つを読み込めませんでした。モジュールには、アセンブリ マニフェストが含まれている必要がありました。
C:\Program Files\MSBuild\Microsoft\VisualStudio\v9.0\ReportingServices\Microsoft.ReportingServices.targets(24,2): エラー MSB4062: "Microsoft.Reporting.RdlCompile" タスクをアセンブリ Microsoft. ReportViewer.Common、バージョン = 9.0.0.0、カルチャ = ニュートラル、PublicKeyToken = b03f5f7f11d50a3a。ファイルまたはアセンブリ 'Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' またはその依存関係の 1 つを読み込めませんでした。モジュールには、アセンブリ マニフェストが含まれている必要がありました。宣言が正しいこと、およびアセンブリとそのすべての依存関係が利用可能であることを確認してください。
参照されているコンポーネント 'Syncfusion.XlsIO.Base' が見つかりませんでした。
これらのエラーは、問題のあるアセンブリ参照が 1 つある 1 つのプロジェクトに関するものです。ソリューション全体を構築しようとすると、もちろん、これが原因でさらに多くのエラーが発生します。また、他のアセンブリ参照で同じ問題を抱えているプロジェクトが他に 2 つあります。VS が解決できないと思われる参照アセンブリのリストがあります。
- Microsoft.ReportViewer.Common
- Microsoft.ReportViewer.WinForms
- Syncfusion.Compression.Base
- Syncfusion.Core
- Syncfusion.XlsIO.Base
Syncfusion アセンブリは、サードパーティ コンポーネント パッケージからのものです。他の 2 つは、Microsoft ReportViewer コンポーネントに関連しています。
参照は [.NET] タブの [参照の追加] ウィンドウを介して追加されているため、疑わしい点はないと思います。アセンブリ参照のプロパティ ウィンドウで、カルチャ、説明、パス、ランタイム バージョン、または厳密な名前に値がありません。バージョンは 0.0.0.0 で、解決済みは False です。VSが参照を解決できないことは明らかだと思います。私の質問はなぜですか?私はこれについて頭を悩ませてきました。これはサーバー上でのみ発生し、ソリューションは私のマシンと同僚のマシンの両方で問題なくビルドされます。アセンブリ参照プロパティは、私たちのマシンでは問題ありません。
サードパーティのコンポーネントを(もちろんサーバー上で)アンインストールしてから、もう一度再インストールしてみました。役に立ちませんでした。VS2008のインストールを修復しようとしました。役に立ちませんでした。ソース管理から以前のバージョンを取得しようとしました(以前にサーバーにビルドされていることがわかっています)、同じエラー メッセージが表示されました。ファイルのアクセス許可を確認しましたが、すべて問題ないようです。アイデアが尽きた…
これを解決するにはどうすればよいですか?
更新 16.02.2009: PC とサーバーの dll のildasm 出力を比較
しようとしました (それについて書いたコメントを参照してください)。1 行に 1 つの小さな違いがあり、それがコメントのように見えます。なぜ違いがあるのか まったくわからないことを認めなければならないので、誰かが私にそれを説明してくれるでしょうか?また、サーバーでウイルススキャンを
実行してみました。役に立ちませんでした。参照を削除してから、ディスク上のdllを参照して再読み込みしようとしました。うまくいきませんでした。
更新 17.03.2009:
解決策を見つけました! 犯人はPanda Antivirus の TruPrevent モジュールでした。モジュールを無効にすると、すべてが機能します。=) fuslogvw.exeとそれが生成したログ
の助けを借りて、これを発見しました。結果をグーグルで検索し、このブログエントリに出くわしました。. これが他の誰かに役立つことを願っています。