3

.NET アプリのデプロイは初めてなので、詳細が必要な場合はお知らせください。

MySql を使用して、Visual Studio で C# コンソール アプリを開発しました。これは、ClickOnce アプリケーションを介して 2 台の Windows 7 マシンに展開され、正常に動作します。Windows XP マシンにインストールしようとしたところ、次のエラーが発生しました。

システムの更新が必要:

アプリケーションをインストールまたは実行できません。アプリケーションでは、最初にアセンブリ MySql.Data バージョン 6.5.4.0 をグローバル アセンブリ キャッシュ (GAC) にインストールする必要があります。

私はいくつかのグーグルを行いましたが、言及されている問題のいずれでもないと思います-すべての権限を持つ管理者アカウントで、ファイアウォールもウイルス対策もありません。C:\Windows\Assembly を確認すると、MySql.Data.CF.dll V 6.5.4.0 がリストされています。

同僚は、次のエラー ログも掘り起こしました。

プラットフォームのバージョン情報 Windows: 5.1.2600.196608 (Win32NT) 共通言語ランタイム: 4.0.30319.1 System.Deployment.dll: 4.0.30319.1 (RTMRel.030319-0100) clr.dll: 4.0.30319.1 (RTMRel.030319-0100) dfdll. dll : 4.0.30319.1 (RTMRel.030319-0100) dfshim.dll : 4.0.31106.0 (Main.031106-0000)

ソース 展開 URL : file:///C:/GearBox/app/publish/ClockworksConsoleApplication.application アプリケーション URL : file:///C:/GearBox/app/publish/Application%20Files/ClockworksConsoleApplication_1_0_0_6/ClockworksConsoleApplication.exe.manifest

IDENTITIES 展開 ID : ClockworksConsoleApplication.application, Version=1.0.0.6, Culture=neutral, PublicKeyToken=efa8c6cf1fc52128, processorArchitecture=msil アプリケーション ID: ClockworksConsoleApplication.exe, Version=1.0.0.6, Culture=neutral, PublicKeyToken=efa8c6cf1fc52128, processorArchitecture=msil,タイプ=win32

アプリケーションの概要 * インストール可能なアプリケーション。

エラーの概要 以下にエラーの概要を示します。これらのエラーの詳細は、ログの後半に記載されています。* C:\GearBox\app\publish\ClockworksConsoleApplication.application をアクティベートすると、例外が発生しました。次の失敗メッセージが検出されました: + ランタイムのロードに失敗しました。(HRESULT からの例外: 0x80131700)

コンポーネント ストア トランザクション エラーの概要 トランザクション エラーは検出されませんでした。

警告 この操作中に警告はありませんでした。

運用進捗状況 * [2012/8/31 9:56:00 AM] : C:\GearBox\app\publish\ClockworksConsoleApplication.application のアクティベーションが開始されました。* [2012 年 8 月 31 日 9:56:02 AM]: 配置マニフェストの処理が正常に完了しました。* [2012/8/31 9:56:02 AM] : アプリケーションのインストールが開始されました。* [2012/8/31 9:56:02 AM] : アプリケーション マニフェストの処理が正常に完了しました。* [2012 年 8 月 31 日 9:56:08 AM]: 互換性のあるランタイム バージョン 2.0.50727 が見つかりました。

エラーの詳細 この操作中に次のエラーが検出されました。* [2012 年 8 月 31 日 9:56:08 AM] System.Runtime.InteropServices.COMException - ランタイムの読み込みに失敗しました。(HRESULT からの例外: 0x80131700) - ソース: System.Deployment - スタック トレース: System.Deployment.Application.NativeMethods.IClrMetaHostPolicy.GetRequestedRuntime(MetaHostPolicyFlags policyFlags、String binaryPath、IStream configStream、StringBuilder バージョン、Int32& versionLength、StringBuilder imageVersion、Int32& imageVersionLength 、Int32& pdwConfigFlags、Guid interfaceId) で System.Deployment.Application.NativeMethods.GetAssemblyCacheInterface(String CLRVersionString, Boolean FetchRuntimeHost, CCorRuntimeHost& RuntimeHost) で System.Deployment.Application.PlatformDetector.

COMPONENT STORE TRANSACTION DETAILS 取引情報はありません。

以前はインストール時に別のエラーが発生していましたが、

URLDownloadToCacheFile が HRESULT '-2146697211' で失敗しました エラー: 'http://station52/clockworksEXE/ClockworksConsoleApplication.application' をダウンロードしようとしてエラーが発生しました。

ただし、Web サイトではなく CD から発行するように設定を変更したところ、これで解決したようですが、まだ GAC エラーが発生しています。

何か案は?

4

3 に答える 3

6

解決策は、MySQL dll をアプリケーションの一部として含めることです。[アプリケーションの公開] 設定で、dll を「ローカルを含める」および/または「含める」ように設定します。

このようにして、ClickOnce アプリが展開されると、dll が一緒にローカルに展開され、GAC で検索されなくなります。

通常、GAC 内のものは他のアプリケーションが共有するためにそこにインストールされ、ClickOnce に関する限り、通常は前提条件としてインストールされます。アプリケーションにコンポーネントを含める必要がないため、展開のサイズが縮小されるだけでなく、GAC で既に共有されているコンポーネントをアプリケーションで使用できるようになります。

あなたが抱えている問題は明らかにClickOnceとWinXPに関係しており、解決策はMySQLコンポーネントをアプリケーションに含めて、それをアプリにローカルで使用することです.

于 2012-09-05T19:37:17.250 に答える
0

Application Filesフォルダー内には.applicationファイル (または .manifest - 申し訳ありませんが、現在マシンの前にいないため確認できません) があります。そのファイルは内部が XML であるため、開いて編集するだけです。欠落しているすべてへの参照が含まれます。毎回同じ場所に公開すると、そのファイルが再生成されない場合があるため、指定されたバージョンが正しいことを確認してください。それが正しいと判断した場合は、正しい MySQL アセンブリがクリック ワンス パッケージに含まれていることを確認する必要があります。(もっと来る)

于 2012-09-04T20:48:43.043 に答える