3

はじめに

これがバグなのか、それとも完全に欠けているものがあるのか​​ わかりません。

プロジェクト (Windows サービス) があります。これを WINSERV と呼びましょう。そして、3 つの別々のプロジェクト (プロジェクト A、B、C) に依存する 3 つの DLL があります。ただし、A は C に依存しています。B は A と C に依存しています。

InstallShield LE を使用してインストーラーをビルドすると、何らかの理由でプロジェクト C が常に STALE バージョンになり、変更できなくなります。バージョンをインクリメントして「クリーン && リビルド」すると、インストール (リモート サーバー上) には常に STALE バージョンが含まれます。

C に依存する各プロジェクトを「ローカルにコピー」しないように設定して、Project WinServ が「参照」自体を維持し、インストーラー用にコピーできるようにします。

問題

しかし、繰り返しになりますが、何をしても、インストールすると古いバージョンになります。数時間後、プロジェクト WINSERV の「ローカルにコピー」を削除し、InstallShield インストール プロジェクトのアプリケーション データ (プロジェクト C のプライマリ出力) への追加としてプロジェクト C を追加することで、問題を回避することができました。これはうまくいくようです!!!!

質問

「MAKE CLEAN」を何千回も試しました。インストーラーをビルドおよび作成する前に Project C DLL のバージョンを確認しましたが、常に古いバージョンでした。

誰でもこれを説明できますか?またはバグ?

PS。InstallShield LE は Windows サービスを実行しません。

4

2 に答える 2

0

これは間違いなくVisualStudio2012のバグです。私は次の方法で複製することができました。

プロジェクトを開いている間(たとえば、MYSQL 5.1.4を参照)。次に、MySQLコネクタのアンインストールを開始し、5.1.7をインストールします。Visual Studio 2012を閉じて再コンパイルすると、すべて正常に動作します。

ただし、InstallShieldを使用してビルドすると、アンインストールされているにもかかわらず、5.1.4を参照します。私の考えでは、それをどこかにキャッシュし、後でビルドプロセス中にアクセスします。

私がそれを解決した方法は、既存のDLLの新しい/古い/異なるバージョンをインストールした後、マシンを再起動して、すべてが順調に進んだことです。

これが誰かに役立つことを願っています

于 2012-12-04T09:58:47.957 に答える
0

私が抱えていた同様の問題のように聞こえます。

何らかの理由で、InstallShield は一時的な ASP.NET フォルダーから DLL を取得することがあります (プロジェクトが ASP でない場合でも)。

フォルダーをクリアしてみてください: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

于 2013-08-21T10:06:15.707 に答える