Visual Studio扩展将输出文件重定向到指定的文件夹

时间:2012-02-14 11:55:20

标签: visual-studio-2010 build visual-studio-extensions

通常,visual studio会将输出文件放入bin / debug或bin / release。

当解决方案包含大量项目时,手动修改每个项目输出并不容易。

csproj文件中的编辑也不可取,因为其中一些是在解决方案之间共享的。

我的问题:有人知道一个可以快速配置输出路径的工具吗?

更新:我的问题通过TFS Build解决了

2 个答案:

答案 0 :(得分:2)

使用msbuild属性自定义项目,如果您按照以下步骤操作,则可以执行此操作:

转到解决方案资源管理器并通过右键单击卸载一个项目,然后选择“卸载项目”。

然后在卸载的项目上再次右键单击并选择“编辑项目”。这将打开项目的XML定义,您将获得布局的智能感知,这将帮助您执行后续步骤。

在visual studio编辑器中找到第一个PropertyGroup标记,并在结束PropertyGroup标记的末尾或末尾添加这些行:

<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<BuildDirectory Condition="$(BuildDirectory) =='' or $(BuildDirectory) == '*Undefined*'">$(SolutionDir)\build\</BuildDirectory>

上面的SolutionDir在msbuild属性中定义,您可以使用此答案获取msbuild script using solution information并查看众所周知的msbuild属性here

下一步是找到每个配置的OutputPath标记,并按如下所示进行编辑:

<OutputPath>$(BuildDirectory)\x86\AutomatedDebug\</OutputPath>

上面的示例假设您有一个名为AutomatedDebug的配置,目标平台为x86。

输出

x:\projects\whereever-your-solution-is\build\x86\AutomatedDebug\

对每个项目重复一次。

要卸载多个项目,请折叠解决方案资源管理器中的所有项目并转换单击或按住Ctrl键单击以选择所有项目或某些项目,然后右键单击所选组以卸载,遗憾的是您无法执行此操作进行编辑,至少在visual studio 2010中。

我是第一个承认这对现有项目来说有点麻烦的人,但您可以轻松创建一个可更改这些设置的visual studio项目模板,以便新项目将使用更方便的默认输出目录。

您无法直接在visual studio中编辑输出目录,因为项目属性编辑器会转义任何带有$()的文本。

此外,您只能使用$()中包含的系统环境变量的名称修改OutputPath。最后一个选项是启用全局输出目录。

如果您使用msbuild直接在命令行中构建以这种方式修改的任何单个项目,那么输出目录将在您运行msbuild的上方的一个目录中创建

..\build\x86\AutomatedDebug

如果您在团队中,则应警告他们不要直接手动编辑输出目录,因为此操作将覆盖任何自定义。

希望此信息有用。 问候。

答案 1 :(得分:1)

据推测,每个解决方案中至少有一个项目是该解决方案所独有的。在Post-Build事件中,将每个项目输出的内容复制到所需位置。

我们经常使用批处理文件。它粗糙但有效。在我们的解决方案独有的项目中,我们创建了一个Release.bat文件。它包含许多文件副本,用于从其他项目的各个输出目录中复制所有必需的组件。然后,您可以在post build事件中运行批处理文件。在构建解决方案时,我们通常会将所有内容复制到“最新版本”。如果这成为正确的版本,我们将最新版本文件夹重命名为实际版本号。

如果您有多个构建配置,或者甚至只使用Debug和Release配置,则可以在Post-Build事件中使用If语句来决定运行哪个批处理文件。因此,您可以创建一个Debug.bat,Release.bat等,它可以满足您的需求。设置它们并让它们首先正常工作可能会很繁琐,但是一旦完全实现它们就非常有用。