没有为项目设置OutputPath属性... / VS任意更改解决方案中的项目配置从Debug到Release

Posted

技术标签:

【中文标题】没有为项目设置OutputPath属性... / VS任意更改解决方案中的项目配置从Debug到Release【英文标题】:The OutputPath property is not set for project ... / VS arbirtrarily changing configuration of projects in solution from Debug to Release 【发布时间】:2021-06-06 18:16:03 【问题描述】:

上周,我尝试使用 Visual Studio 构建的每个解决方案都开始出现问题。我使用的是 VS 2019,我们的组织刚刚推送了一些 Windows 更新(不确定这是否相关),但更新后我使用的是 VS 2019 版本 16.8.4、.Net 版本 4.8.03752。

每当我尝试构建我们的一个解决方案时(在从我们的 repo 的主分支进行免费拉取后,我尝试了 3 种不同的解决方案)我得到超过 1000 个错误,这些错误似乎是未设置的 OutputPath 属性的级联错误似乎与将解决方案设置为 Debug | 任意从 Debug 更改为 Release 的几个项目有关。任何 CPU。

此外,如果我检查项目属性上的构建选项卡(或在配置管理器中检查它们),则不会显示任何调试配置。如果我关闭 Visual Studio,它会提示我保存更改,如果我进行比较表明它确实将多个项目的配置从 Debug 更改为 Release。

我已经在 2 台不同的机器上复制了这个,全新安装了 Visual Studio 2019(和 2017),并从存储库中提取了新代码。我组织中的其他开发人员构建的解决方案很好,他们的配置显示调试 |任何 CPU(即我似乎是世界上唯一遇到此问题的人,而且我在我尝试过的每台机器上都遇到过这个问题,并且有多个版本的 Visual Studio)。

我还看到错误说项目包含“丢失”的 nuget 引用,但是如果我恢复 nuget pacakges,我会收到一条消息,说它们都已安装并且没有什么可恢复的。我还在包文件夹中看到了“丢失”的包。

我们对包使用相对路径,因此它不会是某些人遇到的典型文字路径问题。除此之外,我的文件夹结构没有改变,我们都使用相同的文件夹结构。

我完全不知道下一步该尝试什么。在这方面,我的 googlefoo 完全让我失望了。

我非常希望 Stack Exchange 世界中的某个人能够提供解决方案。

谢谢,

格雷格。

【问题讨论】:

嗨,格雷格,如果您有解决方法,您可以添加有关它的答案以与我们分享。它可以帮助其他社区成员搜索和处理类似的问题。你这样做真是太好了:) 【参考方案1】:

请检查您项目的csproj文件是否遗漏了这些内容:

您可以直接将这些添加到csproj 文件的底部:

<PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
</PropertyGroup>

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

之后,删除binobj文件夹。

然后,在Tools-->Options-->Nuget Package Manager下运行update-package -reinstall- -> Package Manager Console 重新安装所有 nuget 包。

【讨论】:

感谢您的回复。我检查了这些部分已经存在于 .csproj 文件中。但是当我打开配置管理器时,它会显示 Release |任何 CPU 和下拉列表仅显示 Release、。如果我关闭并退出 Visual Studio,它会提示我保存解决方案。如果我保存并进行比较,我会发现它会将这些项目的条目从 Debug 更改为 Release。 这是一个演示问题的短视频的链接。 youtu.be/dFoI_q90x0k

以上是关于没有为项目设置OutputPath属性... / VS任意更改解决方案中的项目配置从Debug到Release的主要内容,如果未能解决你的问题,请参考以下文章

未为 C# 项目设置 OutputPath 属性

未为项目设置OutputPath属性(C ++,空白新解决方案,VS2017)

只有在 CCNET 中调用 MSBuild 时才会出现“OutputPath 属性未设置”错误

Azure Functions C# 预编译的本地发布错误 OutputPath 未设置

在 .NET Core 中设置自定义 <OutputPath> (停止添加框架目标)? [复制]

如何使用 MSBuild 为每个项目的每个构建配置提供不同的 OutputPath?