0

私はアプリケーションとライブラリを同時に書いていますが、ライブラリを更新するたびに、消費者アプリケーションでそれを認識させるのは少し難しいです。ライブラリとアプリケーションごとに個別の Visual Studio インスタンスを開きました。ライブラリを再構築した後、コンシューマー アプリケーションで以下の警告/エラーが発生します。次に、参照を削除して再度追加する必要があります。または、消費者アプリのVSソリューションでそのような警告/エラーが消えるように、ライブラリソリューションを3〜4回クリーンアップしてビルドする必要があります。それを4回行うと、1回または2回行うのに違いがあるのはなぜですか..?

なぜこれが起こるのか、そしてこれをよりスムーズに行うために何かできることがあるかどうかを知りたいですか?

関連性があるかどうかはわかりませんが、私のアプリケーションのほとんどは VB.NET で作成し、ライブラリは C# で作成しています (すべてを C# に変更しているため)。また、デバッグ中にポップアップするため、ライブラリの C# ファイルをコンシューマー アプリケーション VS で開いています。また、開発のこの時点で多くの変更を行っているため、ライブラリ プロジェクトの /bin/Debug フォルダーにあるライブラリ dll も参照します。

警告 1 インポート 'somelibrary' で指定された名前空間または型にパブリック メンバーが含まれていないか、見つかりません。名前空間または型が定義されていて、少なくとも 1 つのパブリック メンバーが含まれていることを確認してください。インポートされた要素名にエイリアスが使用されていないことを確認してください。「ローカルパス」

..

エラー 72 参照されたライブラリ 'path\somelibrary.dll' を読み込めません: 別のプロセスで使用されているため、プロセスはファイルにアクセスできません。

4

3 に答える 3

3

私はアプリケーションとライブラリを同時に書いていますが、ライブラリを更新するたびに、消費者アプリケーションでそれを認識させるのは少し難しいです。ライブラリとアプリケーションごとに個別の Visual Studio インスタンスを開きました。

これが問題の根本的な原因です。Visual Studio は、コントロールの外側にあるものが変更されることを好みません。関連するすべてのプロジェクトが含まれている単一のソリューションを開く必要があります。その後、何かが変更されると、そのプロジェクトに依存するすべてのプロジェクトが自動的に再構築されます。(少なくとも、これがデフォルトです。)

ライブラリを再構築した後、コンシューマー アプリケーションで以下の警告/エラーが発生します。次に、参照を削除して再度追加する必要があります。または、消費者アプリのVSソリューションでそのような警告/エラーが消えるように、ライブラリソリューションを3〜4回クリーンアップしてビルドする必要があります。それを4回行うと、1回または2回行うのに違いがあるのはなぜですか..?

クリーニングと再構築の回数とは何の関係もないと思いますが、最後に変更を行ってからの経過時間-VSインスタンスがdllを構築してロックを解放するのに十分な時間待つ必要がありますファイルを使用している VS インスタンスがアクセスできるようになる前に、ファイルを削除します。

于 2012-11-21T15:29:58.060 に答える
1

プロジェクトをビルドすると、ビルド元のプロジェクトで .DLL ファイルがロックされます。これは、Visual Studio のライブラリ インスタンスが使用するアセンブリのバージョンであるためです。ただし、別のプロセスでまったく同じライブラリを参照しているためです。エラーが表示される理由。

2 つのオプションがあり、2 つのインスタンスを保持してから、2 つのインスタンスを閉じて再度開きます。問題ありません。

より良い方法は、参照している (そしてエラーが発生している) プロジェクト自体をソリューションに追加することです。次に、参照する代わりにYourProject/bin/debug/assembly.dll、タブを介してローカル プロジェクトへの参照を追加しProjectsます。これにより、必要な適切なアセンブリを参照する 1 つのプロセスが保持されます。

于 2012-11-21T15:28:12.197 に答える
0

ソリューション内のすべてのプロジェクトについて、プロジェクト設定を確認します -> [コンパイル] タブ -> [高度なコンパイル オプション]... -> ターゲット フレームワーク (すべての構成)。フレームワークは、あなたが今抱えている問題を引き起こすかもしれません

于 2012-11-21T15:18:45.070 に答える