2012-02-14 75 views
0

通常,visual studio将输出文件放入bin/debug或bin/release。将输出文件重定向到指定文件夹的Visual Studio扩展

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

而且在编辑文件的csproj不理想的,因为他们中的一些是解决方案之间的共享..

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

UPDATE:通过TFS解决我的问题建立

回答

1

想必你在那是唯一的解决方案是每个解决方案至少有一个项目。在后生成事件中,将每个项目输出的内容复制到所需的位置。

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

如果您有多个构建配置,或者甚至仅使用调试和发布配置,则可以使用Post-Build事件中的If语句来决定要运行哪个批处理文件。所以你可以创建一个Debug.bat,Release.bat等来执行你所需要的。开始时设置它们并使它们正常工作可能非常繁琐,但一旦完全实施,它们就非常有用。

转到解决方案资源管理和卸载通过右键单击一个项目,然后选择卸载项目:

+0

谢谢,托比。这正是我们需要的! – devi 2012-02-15 10:19:02

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> 

上面的示例假定您的目标平台x86具有名为AutomatedDebug的配置。

输出将是为每个项目

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

重复。

要卸载多个项目,请在解决方案资源管理器中折叠所有项目并移动单击或Ctrl点击以选择全部或部分项目,然后右键单击选定的组以卸载,但不幸的是,您无法进行编辑至少在视觉工作室2010.

我是第一个承认,这对现有项目来说有点麻烦,但你可以很容易地创建一个视觉工作室项目模板,这些设置已更改,以便新项目将使用更多方便的默认输出目录。

由于项目属性编辑器会转义任何$()封闭的文本,因此无法直接在visual studio中编辑输出目录。

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

如果建立在直接使用的MSBuild在命令行输出目录这种方式修改的任何一个项目,你的MSBuild运行将创建以上从一个目录

..\build\x86\AutomatedDebug 

如果你是在一个团队中,你应该警告他们不要直接手动编辑输出目录,因为此操作将覆盖任何定制。

希望这个信息很有用。 问候。