使用Visual Studio 2008错误地创建输出文件夹

我有很多项目的解决方案。 实际上有一个Core项目和一些插件。 我为所有插件更改了OutputPath,因此所有二进制文件最终都在Core bin \ debug文件夹中。 (这是必要的,因为Core没有关于插件的引用,因此在编译时它不会“包含”插件二进制文件。)

基本上我的文件夹结构如下:

解决方案MySolution.sln Plugin1 \ Plugin2 \ Core \ bin \ debug 

每个插件OutputPath都是“.. \ Core \ bin \ debug”。 当我打开解决方案时,Visual Studio在Solution的文件夹parent中创建一个文件夹“Core \ bin \ debug”,就好像相对路径从.sln文件开始一样。 但是,当我构建解决方案时,二进制文件将输出到正确的路径(“Solution \ Core \ bin \ debug”)。

核心\ BIN \调试

它对我来说看起来像一个Visual Studio的bug,但也许我忽略了某个选项。 任何想法如何解决这个问题?

PS:我知道这不是一个关键问题,因为一切都建立并且工作正常,但我不喜欢无意义的文件夹闲置的想​​法

您可以为它们创建一个构建后脚本(Properties \ Build Events选项卡),而不是更改插件的输出位置,然后将它们复制到Core文件夹。 这样可以防止输出文件夹混淆。

这个命令行应该为你做的诀窍:

copy "$(TargetPath)" "$(SolutionDir)Core\$(OutDir)" 

如果您还需要复制.pdb和.config文件,则可以添加更多行:

 copy "$(TargetPath).pdb" "$(SolutionDir)Core\$(OutDir)" copy "$(TargetPath).config" "$(SolutionDir)Core\$(OutDir)" 

如果你真的想用一行来做,这也应该有用,虽然它不是那么干净:

 copy "$(TargetPath)*" "$(SolutionDir)Core\$(OutDir)" 

如果您在主项目和附加组件中没有使用相同的输出路径,则需要使用硬编码值替换$(OutDir)。 如果你将它们设置为典型的“\ bin \ Debug”文件夹(或刚刚保留默认值),那么你可以使用$(OutDir)值。

而不是使用“.. \ Core \ bin \ debug”,请使用“$(SolutionDir)\ Core \ bin \ debug”。