特定のライブラリ(この場合はChilkat)をWebホスト(appharbor.com)に使用するWebプロジェクトを展開しようとしています。問題は、ライブラリにVisual Studio C++ 2010ランタイム(http://www.cknotes.com/?p=311)が必要なことです。私の質問は、そのランタイムを正しく配置する方法です。私の地元の開発マシン上で展開方法Visual C++ランタイム2010をWebアプリケーションのbinライブラリに配置するにはどうすればよいですか?
の
1.選択肢は、ランタイムがインストールされているが、私は唯一のホスティング環境へのgitのプッシュアクセス権を持っています。
- 使用してアプリケーション とモジュール(管理者権限が必要です)
- 展開をマージ再頒布可能パッケージ (推奨)
- を使用してください:MSDNランタイムを展開する3つの選択肢があるに基づいて
サーバーへの管理アクセス権がないため、このホストで行うことができるのはオプション3だけです。 MSDNのページ
を展開すべきかのDLLの決定
2.のdllは、 "VC \再頒布の\ Program Files \ MicrosoftのVisual Studio 10.0" であるべきと述べています。私の場合、Redistディレクトリはその場所に存在しません(64ビットで動作しているので、 "Program Files"と "Program Files(x86)"の両方をチェックしました)。 atl100 - - mfc100(+言語の変種) - mfc100u - msvcp100 - msvcr100 - vcomp100 :
は私が含まれているDLLのリストを見つけるために、再頒布可能パッケージおよびその内部vs_red.cabを解凍しました - 私が参照しているものを参照するリフレクタでライブラリを確認し、同時にmsdia71: - Microsoft.VisualC(.NET) - KERNEL32.dllから(ネイティブ) - MSVCR100.dll(ネイティブ) - ...と1つの神秘的なライブラリwithou名前。空のテキストを含むモジュールとして表示されます。
サイドノート:ここで使用されているchilkatライブラリは、x64およびx86バージョンで使用できます。ターゲットシステムがx86と思われるため、x86でこれらのタスクを実行しました。 (展開x64のは、「試行が間違った形式でプログラムをロードするために作られました。」というエラーにつながる。)ここで、解凍したvc_red.cabに
DLLを展開するDLLを見つける
3私はハードディスクにdllを見つけることに決めました。 atl100を検索すると、system32、syswow64の3つの場所と、アプリケーションディレクトリの一部として明らかになりました。
上記以外のすべてのファイルは、system32内にあります。 - msdia71(ネイティブ) - これはデバッグと関係があり、ディスクにはまったくないので、必要ないと仮定しています。 - Microsoft.VisualC(.net) - 正しいバージョン(10.x)のGACでこれが見つかりました。
VisualC .NETライブラリを投影するライブラリを追加
(これはWindowsに組み込まれているライブラリですので、私はKERNEL32.dllからコピーされませんでした。)4.参照として追加されました。ネイティブライブラリは、Webアプリケーションのルートに追加され、プロパティは「アクションの作成:コンテンツ」および「出力へのコピー:常に」に設定されています。ビルドされると、dllはbinフォルダの.netライブラリの隣に表示されます。
私がデプロイして実行すると、エラーメッセージが表示されます。 ファイルまたはアセンブリのいずれか、またはその依存関係を読み込めませんでした。指定されたモジュールが見つかりませんでした。
build output of the project hereが表示され、必要と思われるdllが出力ディレクトリにコピーされていることがわかりますが、どこかで間違いがあります。誰もがアイデアを持っていますか?これをデバッグするより良いアプローチですか?または私は何か愚かな:)をやっている?
私はまったく同じ問題(5年後)を持っています。どのように解決しましたか? –
残念ながら私は決してしませんでした。代わりに管理ライブラリを使用しました。 –
返信いただきありがとうございます!私は何かが不可能だと言うことは嫌いですが、... –