8

私のソリューションは次のもので構成されています。

Client- スタートアップ プロジェクト、UI レイヤー。以下に依存します。App

App- ライブラリ、アプリケーション層、アセンブラ。依存: Lib1、 ...

Lib1- ライブラリ、ビジネス ロジック層。適切に動作させるには特定のファイルが必要です:ThirdParty.dll

プロジェクトに追加ThirdParty.dllし( >> ) 、 dll ファイルのプロパティを に設定しました。これで、dll ファイルが出力と出力にコピーされますが、必要な出力にはコピーされません。Lib1AddExisting Item...AddCopy to Output DirectoryCopy AlwaysLib1AppClient

各ソリューション ビルドThirdParty.dllの出力にコピーする正しい (単純な? 明白な?) 方法は何ですか?Client

UPD ThirdParty.dllは参照ではありません。実際、それは別の参照依存です。私の質問は、実行中のアプリケーションのフォルダーにある必要があるすべてのファイルに適用されます。

私が正しく行っていることを確認するために録画したビデオ: http://youtu.be/QwS2tOIc5yQ

4

3 に答える 3

11

既存のアイテムをリンクとして追加:

で同様の問題がVS2010あり、最終的にファイルを として追加し、Linkそのプロパティを に更新しましたCopy Always

あなたの場合、CLIENTプロジェクトで、ThirdParty.dllLink追加>既存のアイテム>リンクとして追加)として追加しCopy to Output Directory、dllファイルのプロパティをに設定しますCopy Always: プロジェクト ノードからフォルダ階層をコピーします。

参考までに:私は実際にオープンソースのLibGit2Sharpを使用していましたが、これにはdll(libGit2.dll)が出力ディレクトリで利用可能である必要がありました。LibGit2Sharp.dllしたがって、参照として含むアプリケーション層を追加した UI 層では、+libGit2.dllとして追加する必要がありました。これは推奨される解決策でした。LinkCopy Always

ビルド後:

もう 1 つのオプションは、ビルド後のスクリプトを作成することです。CLIENT

Copyonがどのように機能するかを知るには、ファイルMSBuildを参照できMicrosoft.Common.targetsます (システムの C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets で利用できるはずです)。

<Target
        Name="CopyFilesToOutputDirectory"
        DependsOnTargets="
            ComputeIntermediateSatelliteAssemblies;
            _CopyFilesMarkedCopyLocal;
            _CopySourceItemsToOutputDirectory;
            _CopyAppConfigFile;
            _CopyManifestFiles;
            _CheckForCompileOutputs;
            _SGenCheckForOutputs">
于 2013-06-04T03:22:08.170 に答える