通常,Visual Studio 将输出文件放入 bin/debug 或 bin/release。
当解决方案包含大量项目时,手动修改每个项目输出并不容易。
也不希望在 csproj 文件中进行编辑,因为其中一些是在解决方案之间共享的。
我的问题:有人知道一个可以快速配置输出路径的工具吗?
更新:TFS Build 解决了我的问题
通常,Visual Studio 将输出文件放入 bin/debug 或 bin/release。
当解决方案包含大量项目时,手动修改每个项目输出并不容易。
也不希望在 csproj 文件中进行编辑,因为其中一些是在解决方案之间共享的。
我的问题:有人知道一个可以快速配置输出路径的工具吗?
更新:TFS Build 解决了我的问题
使用 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 属性
下一步是找到每个配置的 OutputPath 标记并像这样编辑它:
<OutputPath>$(BuildDirectory)\x86\AutomatedDebug\</OutputPath>
上面的示例假设您有一个名为 AutomatedDebug 且目标平台为 x86 的配置。
输出将是
x:\projects\whereever-your-solution-is\build\x86\AutomatedDebug\
对每个项目重复。
要卸载多个项目,请在解决方案资源管理器中折叠所有项目,然后单击 shift 或 ctrl 单击以选择所有或部分项目,然后右键单击所选组以卸载,不幸的是,您不能这样做进行编辑,至少在 Visual Studio 中2010 年。
我是第一个承认这对于现有项目来说有些麻烦的人,但是您可以轻松地创建一个更改了这些设置的 Visual Studio 项目模板,以便新项目将使用更方便的默认输出目录。
您不能直接在 Visual Studio 中编辑输出目录,因为项目属性编辑器会转义任何 $() 封闭文本。
此外,您只能使用包含在 $() 中的系统环境变量的名称来修改 OutputPath。最后一个选项是启用全局输出目录。
如果您直接在命令行中使用 msbuild 构建以这种方式修改的任何单个项目,则输出目录将在您运行 msbuild 的上一个目录中创建
..\build\x86\AutomatedDebug
如果您在一个团队中,您应该警告他们不要直接手动编辑输出目录,因为此操作将覆盖任何自定义。
希望这些信息有用。问候。
假设您在每个解决方案中至少有一个项目是该解决方案独有的。在构建后事件中,将每个项目的输出内容复制到所需位置。
我们经常为此使用批处理文件。它很粗糙但很有效。在我们的解决方案独有的项目中,我们创建了一个 Release.bat 文件。这包含许多文件副本,用于从其他项目的各种输出目录中复制所有必需的组件。然后,您可以在构建后事件中运行批处理文件。我们通常在构建解决方案时将所有内容复制到“最新版本”文件夹。如果这成为一个正确的版本,我们会将最新版本文件夹重命名为实际版本号。
如果您有多个构建配置,或者甚至只使用调试和发布配置,您可以在 Post-Build 事件中使用 If 语句来决定运行哪个批处理文件。因此,您可以创建一个 Debug.bat、Release.bat 等来满足您的需要。一开始设置它们并让它们正常工作可能很乏味,但一旦完全实施它们就非常有用。