我有一个包含 9 个项目的解决方案。每个项目中的所有引用都将其 CopyLocal 属性设置为 False。
当我从 VS 构建它时,这些引用的二进制文件都不会复制到输出构建目录。同样,当我使用 msbuild 构建时,我只看到项目二进制文件而没有引用。
但是,当我在 msbuild 命令中指定输出路径时,会复制一些引用,我不知道为什么?是否有一些我忘记设置的设置?有没有人见过这个?
我有一个包含 9 个项目的解决方案。每个项目中的所有引用都将其 CopyLocal 属性设置为 False。
当我从 VS 构建它时,这些引用的二进制文件都不会复制到输出构建目录。同样,当我使用 msbuild 构建时,我只看到项目二进制文件而没有引用。
但是,当我在 msbuild 命令中指定输出路径时,会复制一些引用,我不知道为什么?是否有一些我忘记设置的设置?有没有人见过这个?
当您在不设置属性的情况下构建应用程序时OutDir
,文件将复制到项目属性中指定的路径(构建\输出路径)。在此之后,还有另一个步骤将引用的项目输出(*.dll 文件)复制到OutDir
您的应用程序 (*.exe)。但是,如果您设置CopyLocal
为 false,则不会发生最后一步。像这样:
ProjectEXE\OutDir = c:\a\bin
ProjectDLL\OutDir = c:\b\bin
请注意两者OutDir
不同(并且在您的项目属性中指定的不同)这一事实。
但是当您OutDir
使用命令提示符设置时,您将两个OutDir
参数设置为相同的路径。仍然没有 DLL 的最终副本到您的应用程序的同一目录,除了它与您第一次构建 DLL 和 EXE 的位置相同。像这样:
msbuild yourSolution.sln /p:OutDir="c:\a\bin\"
ProjectEXE\OutDir = c:\a\bin
ProjectDLL\OutDir = c:\a\bin