我们正在尝试将现有的 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 云服务项目(为 Azure 生成打包辅助角色文件的 .ccproj
文件)。尝试构建云服务项目会导致 Microsoft.Common.CurrentVersion.targets
第 1653 行出现错误:
Project
foo
targetsnet472
. It cannot be referenced by a project that targets.NETFramework, Version=v4.0
.
此时我们几乎陷入困境。我没有找到任何与新 .csproj
格式中的辅助角色项目相关的特定错误的引用。
我尝试将辅助角色项目保留为“旧”项目文件格式,并将其定位到 .NET 4.7.2,Azure 云服务项目构建得很好 - 除了 NuGet 包引用我们的解决方案中依赖的 .NET Standard 项目未正确解析,并且 NuGet 包 DLL 未传播到构建输出文件夹 - 根据我的阅读,这是因为引用 NuGet 包的"new"项目格式方法不是与旧的 packages.config
格式兼容。由于在运行时出现新的缺失依赖项,我不得不一次手动将一个 NuGet 包添加到辅助角色项目中。当我们的项目中使用了接近 100 个 NuGet 包时,显然这不是一个好的解决方案。
最佳答案
从以下位置找到:Azure Cloud Service Classic with .NET Standard target
在 .ccproj 文件中添加以下行为我解决了这个问题:
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
关于c# - Azure 云服务项目与新 .csproj 格式的辅助角色项目不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58696514/