Visual studio 2010 输出路径和MSBuild

Visual studio 2010 输出路径和MSBuild,visual-studio-2010,msbuild,msbuild-4.0,Visual Studio 2010,Msbuild,Msbuild 4.0,我有一个9个项目的解决方案。每个项目中的所有引用都将其CopyLocal属性设置为False 当我从VS构建它时,这些引用的二进制文件都不会复制到输出构建目录。类似地,当我使用msbuild构建时,我只看到项目二进制文件,没有引用 但是,当我在msbuild命令中指定输出路径时,会复制一些引用,我不知道为什么?有什么我忘记设置的设置吗?以前有人见过吗?当您构建应用程序而不设置OutDir属性时,文件将复制到项目属性(build\Output path)中指定的路径。在此之后,还有另一个步骤将引用

我有一个9个项目的解决方案。每个项目中的所有引用都将其CopyLocal属性设置为False

当我从VS构建它时,这些引用的二进制文件都不会复制到输出构建目录。类似地,当我使用msbuild构建时,我只看到项目二进制文件,没有引用


但是,当我在msbuild命令中指定输出路径时,会复制一些引用,我不知道为什么?有什么我忘记设置的设置吗?以前有人见过吗?

当您构建应用程序而不设置
OutDir
属性时,文件将复制到项目属性(build\Output path)中指定的路径。在此之后,还有另一个步骤将引用的项目输出(*.dll文件)复制到应用程序(*.exe)的
OutDir
。但如果将
CopyLocal
设置为false,则最后一步不会发生。像这样:

ProjectEXE\OutDir = c:\a\bin
ProjectDLL\OutDir = c:\b\bin
msbuild yourSolution.sln /p:OutDir="c:\a\bin\"

ProjectEXE\OutDir = c:\a\bin
ProjectDLL\OutDir = c:\a\bin
请注意这两个
OutDir
是不同的(并且在项目属性中指定的方式不同)

但是,当您使用命令提示设置
OutDir
时,您将两个
OutDir
参数设置为相同的路径。仍然没有DLL的最终副本到应用程序的同一目录,除了它是您第一次构建DLL和EXE的同一位置。像这样:

ProjectEXE\OutDir = c:\a\bin
ProjectDLL\OutDir = c:\b\bin
msbuild yourSolution.sln /p:OutDir="c:\a\bin\"

ProjectEXE\OutDir = c:\a\bin
ProjectDLL\OutDir = c:\a\bin

将“/v:diag”附加到命令行,然后您将有大量日志条目要分析。您在这里试图解决什么问题?您是否正在尝试将所有内容构建到同一输出文件夹?