私が作成した C#/WPF アプリケーションを展開しようとして、サード パーティの DLL への参照が含まれていることに非常に不満を感じていました。プロジェクト内に というフォルダーを作成しlib
、ここにこれらの DLL をすべて配置しました。VS2012 では、そのフォルダーを参照し、すべての DLL を選択して参照を追加しました。 Copy Local
すべてに設定されtrue
ています。ビルドして実行するときはすべて問題ありませんが、発行を選択して OneClick インストーラーを作成すると、物事はそれほどスムーズではありません。公開ウィザードで、ディスクからインストールするように設定し、更新をチェックしないように設定しました。そのフォルダーを取り出してフラッシュ ドライブに置き、それを別の PC に接続してセットアップを実行すると、例外がスローされます。何が起こっているのかはわかっていると思いますが、正しく展開するためにこれをパッケージ化する方法がわかりません。
私の DLL の 1 つは、C++ プロジェクト用に設計された DLL への C# ラッパーです。私たちは、Application
requiresDLL1
とDLL1
requiresと言いますDLL2
。 はDLL DLL2
ではないため、プロジェクトに参照として追加できません。取得するには、同じフォルダにある必要があります。Chromium Embedded FrameworkをラップするCefSharpを使用しています。.NET
DLL1
DLL2
CefSharp.dll に必要な DLL をpublish/Application Files
ディレクトリに配置しようとしましたが、うまくいきませんでした。VS2012 から存在するすべての DLL に.deploy
拡張機能があることに気付きました。その拡張機能をスキャンして取得しているかどうかを確認するためにその拡張機能を追加しましたが、機能しませんでした。Windows アプリケーションの開発と展開を行うのはこれが初めてで、読んだ MSDN のすべてのチュートリアルまたはブログ投稿はこのケースをカバーしていないようであり、展開マネージャーにはこれらを処理するための他のオプションがありません。ケースの種類。
それが役立つ場合、スローされる例外コードは次のとおりです。CLR20r3
例外をキャッチして表示すると、提供されるすべての情報は基本的にCefSharp.dll or one of it's dependencies cannot be loaded
. DLL2
と同じフォルダになかったときに以前に取得したものDLL1
。
このような状況で VS2012 からデプロイする方法について誰か助けてもらえますか?
前もって感謝します!
編集:情報更新
Visual Studio がインストールされていないテスト マシンにデバッグ ビルド バージョンをプッシュしようとしました。CefSharp
またはその他の C++ ランタイムをビルドする場合、通常は同じ名前ですが、最後に文字 'd' が追加された のDLL
すべてのデバッグ バージョンが検索されます。DLL
以下で説明するように、C++ ランタイムのデバッグ バージョンは再配布できません。DLLs
それらを手動でプロジェクトに追加して として設定できないわけではありませんがCopy Always
、それは一種のハックジョブです。新しいプロジェクトをゼロから開始し、すべてのリリース バージョンの DLL を追加してビルドしましたが、すべて問題ありませんでした。