system.windows.interactivity.dll を参照する ac# プロジェクトを作成しました。
私が疑問に思っているのは、*.exe をビルドするときに次のような構造になるようにプロジェクトを設定する方法です。
Program Folder
program.exe
Libraries Folder
system.windows.interactivity.dll
プロジェクト フォルダーと同じレベルになるように、ソリューション フォルダーの下に "Libraries" フォルダーを配置して、少し実験を試みました。これにより、「..\Libraries\system.windows.interactivity.dll」の csproj ファイルに相対パスが与えられますが、コンパイル時に dll が exe と共にデバッグ フォルダーにコピーされ、これが保持されるため、これは解決策にはなりません。 「同じレベル」のパス構造。
dllを別のディレクトリに配置して参照するように変更するにはどうすればよいですか?
[更新]
そこで、プロジェクトで以下を
変更しました。 1: 参照 system.windows.interactivity.dll の 'Copy Local' プロパティを False に変更しました。
2: csproj ファイルに次のコードを追加して、Libraries フォルダーが出力ディレクトリの上に存在するかどうかを確認し、存在しない場合は作成してから dll をコピーします。
<Target Name="BeforeBuild">
<MakeDir Directories="$(OutDir)..\Libraries"
Condition="!Exists('$(OutDir)..\Libraries')" />
<Copy SourceFiles="..\Libraries\System.Windows.Interactivity.dll"
DestinationFolder="$(OutDir)..\Libraries"
ContinueOnError="True" />
</Target>
3. 次のコードを App.config に追加して、アプリが dll を検索する別の場所を追加します。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="..\Libraries"/>
</assemblyBinding>
</runtime>
</configuration>
私の調査結果:
アプリをビルドすると、元の投稿の構造のように、すべてのファイルが必要な場所に正確に配置されます。出力ディレクトリからexeを実行しようとすると、dllが見つかりません。
[/アップデート]