如何将“bin”和“obj”目录重定向到不同的位置?

Posted

技术标签:

【中文标题】如何将“bin”和“obj”目录重定向到不同的位置?【英文标题】:How can I redirect the "bin" and "obj" directories to a different location? 【发布时间】:2011-06-11 18:07:11 【问题描述】:

有没有办法告诉 Visual Studio 为 binobj 目录使用不同的位置?

例如,如果我的项目位于 C:\my\myprojects.csproj 中,我如何将 objbin 目录放在 D:\ otherdirectory\binD:\otherdirectory\obj。 Visual Studio 项目选项仅提供重定向 bin 目录,而不是 obj 目录。

另外,额外的问题:我可以使用环境变量,而不是完整或相对路径吗?

这可能吗?

【问题讨论】:

这可能是(完全)将源文件与 Visual Studio 项目中生成的文件分开的规范问题(除非有更旧/更好的文件)。需要为更高版本的 Visual Studio 添加和/或更新答案。 【参考方案1】:

参考this article 并使用.proj 文件中的节点BaseOutputPath(用于bin 文件夹)和BaseIntermediateOutputPath(用于obj 文件夹) .

下面给出了一种修改与bin相关的调试和发布文件夹的方法-

在解决方案资源管理器中,选择您要配置的 C# 项目 构建参数。

接下来,从 Visual Studio 菜单栏中,选择 ProjectProperties。将为您的项目显示“属性页”对话框。

选择您要更改的配置(发布/调试)并展开左侧窗格中的配置属性节点。选择Studio放在Outputs的“Output path”属性中 属性表。

请注意,每种类型的输出路径都是单独指定的 构建配置,并且在一个配置上设置它不会 将其设置在所有剩余的上。

原文出处-http://www.eggheadcafe.com/software/aspnet/32040244/how-to-change-the-obj-folder.aspx

【讨论】:

不能从 UI 更改 obj 目录是否正确? @user380719 - 是的,据我所知,您无法从 UI 更改 bin 和 obj 文件夹的目录。 哼。在 VS2015 中,设置 IntermediateOutputPath(无 Base)可以正常工作。但我无法让它与 BaseIntermediateOutputPath 一起使用。我也无法让 BaseOutputPath 工作。知道为什么吗? 另外,@SachinShanbhag 你的 eggheadcafe 链接现在已经死了。甚至archive.org 也没有副本。 :-( 最后的链接坏了(“您请求的页面已被删除。”)。【参考方案2】:

要将obj 目录从代码库中移出到另一个公共文件夹,您可以执行以下操作。在解决方案的根目录中创建Directory.Build.props,内容如下:

<Project>
  <PropertyGroup>
    <BaseIntermediateOutputPath>$(SolutionDir)\_Obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
  </PropertyGroup>
</Project>

要使公共obj 目录中的文件夹结构与解决方案中的相同,您可以在解决方案的每个子文件夹中创建具有相同和相似内容的文件。例如。如果您有包含多个项目的子文件夹Algorithms,您可以将包含以下内容的文件放入其中:

<Project>
  <PropertyGroup>
    <BaseIntermediateOutputPath>$(SolutionDir)\_Obj\Algorithms\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
  </PropertyGroup>
</Project>

BaseOutputPath 用于bin 文件夹。

更多信息Directory.Build.props 更多信息MSBuild macroses

【讨论】:

在使用此设置之前删除所有旧的 bin 和 obj 目录,否则会出现编译器错误【参考方案3】:

在 Build 选项卡的 Project-options 中,您可以选择输出路径(在底部)。

【讨论】:

那是 bin 文件夹,不是 obj 文件夹【参考方案4】:

在 Visual Studio 2013 中,这是在项目“配置属性/常规/中间目录”中指定的。

【讨论】:

这个线程是我在寻找 MSVC 2013 的答案时出现的几个线程之一,当我发现这个解决了我的问题并转移的设置时,我浪费了太多时间试图让 BaseIntermediateOutputPath 工作但没有成功OBJ 到 RAM 驱动器文件夹..

以上是关于如何将“bin”和“obj”目录重定向到不同的位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据用户的状态位置将用户重定向到不同的 index.php 页面

地理位置重定向到不同域的同一页面?

如何根据点击的目标使用 navigateToURL 将用户发送到不同的 URL?

301 重定向 - 根文件夹和子文件夹的不同位置

如何将标准输出和错误输出同时重定向到同一位置?

Boost消息队列文件可以重定向到用户指定的位置吗