在Visual Studio 2010到2013中,默认情况下(例如,当我创建新的控制台应用程序时),新解决方案将其编译的可执行文件输出到Solution name/Project name/bin/Debug/
。我希望它们输出到Solution name/Debug/
,同样适用于所有其他构建配置,例如“Release”。
我可以手动转到每个项目的属性,转到Build
标签,将Output path
从bin\Debug
更改为..\Debug
。我必须为每个项目和每个构建配置重复此操作。
经过几十个解决方案后,我每次都手动执行这项繁琐的工作,我有点不舒服。有没有办法更改默认输出路径?
适用于Visual Studio 2013的解决方案就足够了。
答案 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"/>