如何在Visual Studio中更改默认构建输出目录?

时间:2014-01-08 21:35:53

标签: visual-studio configuration build

在Visual Studio 2010到2013中,默认情况下(例如,当我创建新的控制台应用程序时),新解决方案将其编译的可执行文件输出到Solution name/Project name/bin/Debug/。我希望它们输出到Solution name/Debug/,同样适用于所有其他构建配置,例如“Release”。

我可以手动转到每个项目的属性,转到Build标签,将Output pathbin\Debug更改为..\Debug。我必须为每个项目和每个构建配置重复此操作。

经过几十个解决方案后,我每次都手动执行这项繁琐的工作,我有点不舒服。有没有办法更改默认输出路径?

适用于Visual Studio 2013的解决方案就足够了。

3 个答案:

答案 0 :(得分:10)

此属性在每个Visual Studio Project Template

中定义

因此,例如,C#控制台应用程序模板位于

\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ProjectTemplates\CSharp\Windows\1033\ConsoleApplication\consoleapplication.csproj

csproj是一个XML文件,您可以随意编辑。构建输出目录定义如下(对于每个配置):

...
<OutputPath>bin\Debug\</OutputPath>
...
<OutputPath>bin\Release\</OutputPath>
...

如果您更改此文件,它将更改您以后的所有新C#控制台应用程序项目。您还可以编写一个实用程序,列出\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ProjectTemplates中的所有csproj并相应地更新它们。

答案 1 :(得分:4)

这不是必需的。

解决方案中的一个项目标记为“启动”项目,在“解决方案资源管理器”窗口中以粗体显示。一个EXE项目,就像您的控制台模式应用程序。您使用Project + Add Reference添加对解决方案中其他项目的引用,以便您可以使用这些项目在控制台模式应用程序中生成的类库。

这些引用将Copy Local属性设置为True。

在构建项目时,MSBuild将自动将程序集从各自的bin \ Debug目录复制到控制台模式应用程序的bin \ Debug目录中,这要归功于Copy Local设置。它足够智能,也可以查看这些类库的依赖关系并复制它们。

所以在构建完成之后,bin \ Debug目录不仅会有你的控制台模式项目的EXE文件,而且它需要正确执行的所有DLL。

有几种方法可能出错,MSBuild无法弄清楚这种依赖实际存在。非常罕见,例如,您必须在代码中使用Reflection来加载程序集(Assembly.Load()和朋友)。解决方法是在后构建事件中显式复制依赖项。你没有在你的问题中留下足够的面包屑来判断这是否是真正的问题。

你要求的当然是可能的,IDE只是不容易,因为它不是设计为假设这是必要的。您必须将Build + Output Path设置替换为..\Debug,而不是{{1}}。您可以使用已预设的设置创建自己的项目模板。创建一个新的类库项目,更改设置并使用文件+导出模板来创建模板。下次创建项目时,您将可以使用它。

但是,真的,首先要找出为什么默认的Copy Local机器不适合你。

答案 2 :(得分:1)

您可以创建自己的.targets文件,根据需要更改<OutputPath>并将其导入项目,而不是更改受全局保护的文件。这也可以设置您可能想要更改的其他默认值,并且不希望为每个项目执行此操作。在项目文件中你需要做的只是向顶部添加(当然在根元素之后):

<Import Project="$(SolutionDir)\Common.targets"/>