Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中配置中间输出目录#_C#_.net_Visual Studio 2008 - Fatal编程技术网

C# 如何在C中配置中间输出目录#

C# 如何在C中配置中间输出目录#,c#,.net,visual-studio-2008,C#,.net,Visual Studio 2008,我正在尝试组织我的工作区,并希望将我的中间对象放在与.csproj文件相关的。\build\obj文件夹中。所以我说: 。\build\obj\Debug 在.csproj文件中。现在,在构建解决方案时,中间对象被放置在该位置,但问题是当解决方案打开时,.csproj文件所在的目录中仍然会创建一个obj目录(类似于obj\Debug\TempPE)。此目录的用途是什么?我如何重新定位它?您可以尝试这样做(不要忘记,根据您的目标构建类型,将使用调试和发布部分): ... ..\build\obj

我正在尝试组织我的工作区,并希望将我的中间对象放在与.csproj文件相关的
。\build\obj
文件夹中。所以我说:

。\build\obj\Debug

在.csproj文件中。现在,在构建解决方案时,中间对象被放置在该位置,但问题是当解决方案打开时,.csproj文件所在的目录中仍然会创建一个
obj
目录(类似于
obj\Debug\TempPE
)。此目录的用途是什么?我如何重新定位它?

您可以尝试这样做(不要忘记,根据您的目标构建类型,将使用调试和发布部分):


...
..\build\obj
$(baseIntermediateOutput路径)$(配置)\
...
..\build\obj
$(baseIntermediateOutput路径)$(配置)\
我用过:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>$(OBJDIR)\$(SolutionName)\bin\$(Configuration)\</OutputPath>
    <BaseIntermediateOutputPath>$(OBJDIR)\$(SolutionName)\obj\$(Configuration)\</BaseIntermediateOutputPath>
    <IntermediateOutputPath>$(BaseIntermediateOutputPath)\</IntermediateOutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
</PropertyGroup>

任意CPU
真的
满的
假的
$(OBJDIR)\$(解决方案名称)\bin\$(配置)\
$(OBJDIR)\$(解决方案名称)\obj\$(配置)\
$(BaseIntermediateOutput路径)\
调试;痕迹
促使
4.
(在VisualStudio2012测试版中,FWIW),并且工作正常


我机器上的OBJDIR指向
E:\BuildOutput

像Microsoft一样执行以下操作:

  <PropertyGroup>
    <IntermediateOutputPath Condition=" '$(PlatformName)' == 'AnyCPU' ">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
    <IntermediateOutputPath Condition=" '$(PlatformName)' != 'AnyCPU' ">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
  </PropertyGroup>

$(baseIntermediateOutput路径)$(配置)\
$(BaseMediateOutputPath)$(平台名)\$(配置)\

我刚从C++切换到C语言,已经习惯了用一种非常特殊的方式构造工作空间。我希望在C#中保持相同的工作区结构。重复某些“enterprisey”版本控制系统使处理版本化文件夹中的非版本化对象变得困难的方式。除此之外,我从来都不喜欢将构建对象与我的源代码树混合在一起。obj\目录仍在与.csproj文件相同的目录中生成。生成时,中间对象会转到.csproj文件指定的目录,但由于某种原因,.csproj文件目录中仍会生成此obj\目录。@blachniet-Visual Studio会创建该obj目录。这很烦人,但是如果您不使用VS,只从命令行使用MSBuild,它就可以正常工作。我不知道为什么微软认为我们要把构建输出放在源代码树中。我相信
baseintermediateoutput路径
的全部目的是不包括
$(配置)
(即,它的名字是“base…”)。您应该使用
IntermediateOutputPath
来固定该零件。另外,请注意,您可以在
中间输出路径
的末尾重复创建两个反斜杠。
  <PropertyGroup>
    <IntermediateOutputPath Condition=" '$(PlatformName)' == 'AnyCPU' ">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
    <IntermediateOutputPath Condition=" '$(PlatformName)' != 'AnyCPU' ">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
  </PropertyGroup>