.csproj文件中的自动生成IntermediateOutputPath

13

从Git更新代码后,我的csproj出现错误,因为file路径不存在。这是触发错误的代码:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ZAL_Release|x64'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>..\Release\bin\soft\</OutputPath>
    <DefineConstants>TRACE;ZAL</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
    <Optimize>true</Optimize>
    <IntermediateOutputPath>C:\Users\HARRY~1\AppData\Local\Temp\vs543E.tmp\x64\ZAL_Release\</IntermediateOutputPath>
</PropertyGroup>

这个filepath存在于Harry的电脑上,但是在我的电脑上不存在。这个名字的人不知道他是如何创建它的,所以我认为是Visual Studio创建的。因此,我有三个问题:

1. csproj中的IntermediateOutputPath标签的目的是什么?(我已经查看了MSDN文档,但还不清楚)

2. Harry如何生成代码(因为他不知道)?

3. 是否可以使用通用变量获取每个人都可以使用的文件路径?在这种情况下,程序运行是否需要IntermediateOutputPath


@TheGeorgeous:我不明白为什么你要让我删除csproj文件,然后再打开项目。如果我这样做,它将无法打开项目,甚至可能会丢失一些数据,如项目引用。 - Hans
1
无论如何,您绝对不应该从git中删除此文件。 .csproj文件是每个Visual Studio项目的中心项目文件,没有它,人们将无法在您的项目上工作。 - kowsky
1个回答

19
  1. 项目文件中的OutputPath

    指定输出目录的路径,相对于项目目录,例如"bin\Debug"。

    BaseOutputPath

    为输出文件指定基本路径。如果设置了此属性,MSBuild将使用OutputPath = $(BaseOutputPath)\$(Configuration)。示例语法:c:\xyz\bin\

    BaseIntermediateOutputPath

    创建所有特定于配置的中间输出文件夹的顶级文件夹。默认值为obj。下面的代码是一个示例:c:\xyz\obj\

    IntermediateOutputPath

    从BaseIntermediateOutputPath派生出来的完整中间输出路径,如果未指定路径。例如,\obj\debug。如果覆盖了此属性,则设置BaseIntermediateOutputPath没有效果。

    您可以在此处查阅更多信息。通常情况下,这些路径应该是相对的,不能导致任何主目录或其他用户特定路径。

  2. 请参考此问题,了解如何在csproj文件中插入IntermediateOutputPath的解释。

    编辑:实际上,这是一个模糊的解释,但我找不到其他关于此的信息。密切关注csproj文件的更改以确定更改原因。

  3. 您可以将IntermediateOutputPath设置为相对路径。但是,您也可以删除整个标记并使用默认值。在我们的Visual Studio 2015项目文件中,我们只设置了基本的OutputPath,一切正常工作。我认为您的中间对象的默认位置是/obj


5
好的,我已经删除了IntermediateOutputPath这一行,现在一切都正常了。大家都很开心。感谢@kowsky。 - Hans
不好。每次我从命令行发布时,Visual Studio都会插入这个特定于用户的绝对路径,而且没有办法停止它。这是一个重大的错误。截至撰写本评论时,Visual Studio 2019的最新版本。 - Triynko
@Triynko,你有没有在解决VS2019的顽固问题上取得任何进展?我遇到了你描述的同样问题。 - Alex Mann

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