在Visual Studio 2012中移动obj文件夹

23
因为路径变得太长(超过260个字符),所以我需要在其他地方创建obj文件夹。
我该如何告诉Visual Studio 2012在指定的路径中创建此文件夹?

我认为你无法做到这一点;但是你可以缩短项目/解决方案的路径和/或程序集名称。如果你的文件夹嵌套非常深,也许考虑使用符号链接或目录联接来缩短路径。 - codechurn
2
这是一场等待发生的事故。目前 obj 文件夹受到影响...还可能会影响什么?为什么不降低风险,将所有内容移动到更靠近根目录的地方呢? - spender
1
也许这会有所帮助:http://www.howtogeek.com/howto/windows-vista/map-a-drive-letter-to-a-folder-the-easy-way-in-windows/ - Ash Burlaczenko
很遗憾,我无法将项目移动到必须以这种方式命名的工作区。 - ff8mania
4
可能是重复的问题,与如何将“bin”和“obj”目录重定向到其他位置的问题重复。链接为:https://dev59.com/y2445IYBdhLWcg3wssXH - Peter Mortensen
2个回答

46

您需要编辑项目文件(XML)以指定 <BaseIntermediateOutputPath>。这个值默认是 obj\

<PropertyGroup>
  <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
  <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
  ...
  <BaseIntermediateOutputPath>some\path\</BaseIntermediateOutputPath>
</PropertyGroup>

3
显然,你不需要把这个放在一个单独/特殊的属性组中。在项目文件顶部的主(第一个)PropertyGroup 对我来说就可以用了。 ;) - James Wilkins
1
我为此烦恼了很久。我一直在研究修改构建说明。一行代码解决问题!谢谢。 - Lereveme
3
那很糟糕。对于C/C++项目(也适用于C++/CLI),您只需要在“项目属性>配置属性>常规”中更改“中间目录”的路径即可。 - Stefan Falk
是的,它可以工作。文件夹甚至可以完全位于.sln文件夹之外的根文件夹中(因此源文件和生成文件之间完全分离),通过使用相对路径,例如....\build\obj\。这也适用于bin文件夹,通过OutputPath属性(如BaseIntermediateOutputPath)或通过项目属性(→“构建”→“配置”=“调试”,“输出”→“输出路径” = ....\build\bin\Debug\)。请注意,与obj相反,路径必须是唯一的,每个配置/平台组合一个(例如,对于debug/release、32位/64位,有4个)。 - Peter Mortensen

4

除了Sam Harwell,您还可以使用常量,并且可以通过以下方式更改任何特定的<PropertyGroup/>(例如仅“release”):

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <Optimize>true</Optimize>
  .....
  <OutputPath>\your_projects\bin\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)\</OutputPath>
  <IntermediateOutputPath>\your_projects\obj\$(SolutionName)\$(MSBuildProjectName)\$(Configuration)\</IntermediateOutputPath>
  <DefineConstants>TRACE</DefineConstants>
</PropertyGroup>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接