Azure 云服务项目与新 .csproj 格式的辅助角色项目不兼容

Azure Cloud Service Project Not Compatible With Worker Role Project in new .csproj format

我们正在尝试将我们现有的 Azure Worker Role 项目升级到目标 .NET 4.7.2,并将我们解决方案中的所有依赖项目重新定位到 .NET Standard 2.0 - 这是我们努力的中间步骤完全消除 Worker Role 项目并迁移到托管在 Docker 容器中的 .NET Core 3.0 Worker Service。

我们解决方案中的所有项目文件 (.csproj) 都已转换为 "new" 格式,并且我们已消除 packages.config,一切正常。几乎。

我们剩下的一个障碍是尝试构建我们的 Azure 云服务项目(.ccproj 文件,该文件为 Azure 生成打包的辅助角色文件)。尝试构建 Cloud Service 项目导致第 1653 行错误 Microsoft.Common.CurrentVersion.targets:

Project foo targets net472. It cannot be referenced by a project that targets .NETFramework, Version=v4.0.

此时我们几乎被难住了。我没有找到任何与新 .csproj 格式中的辅助角色项目相关的特定错误的引用。

我尝试将 Worker Role 项目保留为 "old" 项目文件格式并将其定位到 .NET 4.7.2 并且 Azure 云服务项目构建得很好 -- except 我们的解决方案中来自依赖 .NET Standard 项目的 NuGet 包引用未正确解析,并且 NuGet 包 DLL 未传播到生成输出文件夹 - 根据我的阅读,那是因为 "new"引用 NuGet 包的项目格式方法与旧 packages.config 格式不兼容。由于在运行时出现新的缺失依赖项,我不得不一次手动将一个 NuGet 包添加到 Worker Role 项目。当我们的项目中使用了将近 100 个 NuGet 包时,这显然不是一个好的解决方案。

从以下找到:Azure Cloud Service Classic with .NET Standard target

在 .ccproj 文件中添加以下行为我修复了它:

    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>