0

Visual Studio ソリューションで管理されていない .dll の依存関係を整理しようとしていますが、DLL がソリューションの最上位レベルに散らばっていない限り、DLL はアプリケーションのディレクトリに組み込まれず、アプリケーションの実行に失敗します。私はこの件について多くのグーグルを行ってきましたが、app.config設定の形で解決策があるようです:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblybinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatepath="lib" />
    </assemblybinding>
  </runtime>
</configuration>

ソリューションに「lib」というフォルダーがあり、フォルダー内のすべてのファイルに対して Copy Local が true に設定されていますが、アプリケーションを実行できません。アプリケーションを壊さずに Visual Studio ソリューションを整理するにはどうすればよいですか?

4

1 に答える 1

0

この問題を解決する唯一の方法は、Windows .bat ファイルを使用することです。余分な検索パスを管理されていない実行可能ファイルにエンコードする方法があれば、知りたいです!

これが私がすることの例です:

SET PATH=$~dp0plugins\MY_PLUGIN\Debug;%PATH%
vcvars32.bat
devenv build\MY_PROJECT.sln

最初の行は、Visual Studio に dll を見つけてもらいたい場所のパスを追加します。

2 行目により、「適切な」ビジュアル スタジオが開くようになります。IE: 環境が VS2010 用に設定されている場合、VS2012 をデフォルトで開く必要はありません。

最後の行は、IDE を呼び出して sln ファイルを開きます。

開いたビジュアル スタジオには、プラグインの 1 つの Debug フォルダーへのパスが含まれています。アプリケーションをデバッグすると、正しい dll が検出され、ロードされ、問題なくデバッグされます。これは、[Debug] -> [Windows] -> [Modules] パネルで確認します。

これは、デバッグ構成でのみ機能します。リリース構成を実行する場合は、.bat ファイルを「Release」に変更し、Visual Studio を閉じて、.bat ファイルを再実行します。

これと同じパターンを実行可能ファイルの実行に適用します。dll を取得する環境をセットアップし、実行可能ファイルを実行します。

SET PATH=$~dp0plugins\Debug;%PATH%
... Repeat for other dll locations
"%~dp0Debug\MY_EXECUTABLE.exe" %*

SS64は、.bat ファイルで何ができるかを理解するための貴重なリソースです。

于 2013-11-14T23:32:04.723 に答える