如何将必要的文件包含到独立客户端项目的输出中?

ast*_*tef 8 c# dependencies projects-and-solutions visual-studio-2010

我的解决方案包括:

Client - 启动项目,UI层.依赖于取决于:App

App - 库,应用程序层,汇编程序.取决于:Lib1,......

Lib1 - 库,业务逻辑层.需要特定文件才能正常工作:ThirdParty.dll

我已经添加ThirdParty.dllLib1项目中(Add> Existing Item...> Add),并设置Copy to Output DirectoryDLL文件的属性Copy Always.现在dll文件被复制到Lib1输出和App输出,但不是复制到Client我需要的输出.

什么是复制ThirdParty.dllClient每个解决方案构建的输出的正确(简单?明显?)方式?

UPD ThirdParty.dll不是参考.实际上,这是另一个参考依赖.我的问题适用于需要在运行应用程序的文件夹中的任何文件.

录制的视频,以确保我做得对:http://youtu.be/QwS2tOIc5yQ

jac*_*ous 10

将现有项添加为链接:

我有一个类似的问题VS2010,我有点最后添加文件Link并更新其属性Copy Always.

在您的情况下,在CLIENT项目中,添加ThirdParty.dllLink(添加>现有项>添加为链接)并将Copy to Output Directorydll文件的属性设置为Copy Always. 注意:它将从项目节点复制文件夹层次结构.

仅供参考:我实际上使用的是开源LibGit2Sharp,它需要在输出目录中提供dll(libGit2.dll).因此,在UI层中,添加了包含LibGit2Sharp.dll作为参考的应用层; 我不得不添加libGit2.dllLink+ Copy Always.这是推荐的解决方案.

发布后:

另一种选择可能是编写后期构建脚本 CLIENT

要知道如何CopyMSBuild作品中,你可以参考Microsoft.Common.targets文件(应提供@ C:\ WINDOWS\Microsoft.NET \框架\ v4.0.30319 \在您的系统Microsoft.Common.targets)

<Target
        Name="CopyFilesToOutputDirectory"
        DependsOnTargets="
            ComputeIntermediateSatelliteAssemblies;
            _CopyFilesMarkedCopyLocal;
            _CopySourceItemsToOutputDirectory;
            _CopyAppConfigFile;
            _CopyManifestFiles;
            _CheckForCompileOutputs;
            _SGenCheckForOutputs">
Run Code Online (Sandbox Code Playgroud)