具有 .NET Standard 目标的 Azure 云服务经典
Posted
技术标签:
【中文标题】具有 .NET Standard 目标的 Azure 云服务经典【英文标题】:Azure Cloud Service Classic with .NET Standard target 【发布时间】:2017-11-07 14:57:22 【问题描述】:有没有办法使用面向 .netstandard2.0 的辅助角色运行 Azure 云服务经典项目?
我有这样的项目,但每当我尝试构建它时,我都会收到此错误:
严重性代码描述项目文件行抑制状态 错误项目 'C:\path\to\project\src\Frontend\Frontend.csproj' 针对“.NETStandard,Version=v2.0”。它不能被 以项目为目标 '.NETFramework,版本 = v4.0'。用户发现服务 C:\Program Files\dotnet\sdk\2.0.2\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.Common.targets 87
我尝试在 ccproj 中设置目标框架,但没有帮助。
【问题讨论】:
您是否尝试过按照此处的步骤操作:github.com/dotnet/sdk/issues/1241 此构建也是在您的本地计算机或 VSTS 上运行 谢谢@ObiEff,但这似乎与我的问题无关。我从云服务项目中引用 .netstandard 项目时遇到问题。 github上的帖子是关于从netcoreapp2.0引用的。 【参考方案1】:以防万一其他人遇到此错误,我通过将此行添加到云服务 .ccproj 文件的 Project/PropertyGroup 部分来解决此错误:
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
例如
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>2.9</ProductVersion>
<ProjectGuid>8c99xxxx-xxxx-xxxx-xxxx-xxxxxxxx273e</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>MyCloudService</RootNamespace>
<AssemblyName>MyCloudService</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion> <!-- Added -->
<StartDevelopmentStorage>True</StartDevelopmentStorage>
<Name>CloudSheetCloudService</Name>
etc...
默认情况下,云服务项目不指定框架(它不需要),但 MSBuild 中的某些东西似乎在云服务和 web / worker 角色之间进行版本检查,然后构建失败。
更改工具版本没有帮助。
作为背景 - 我有一个旧的云服务,它引用了一个使用新 csproj 样式的 4.6.2 项目,如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
</PropertyGroup>
</Project>
HTH。 标记。
编辑:要编辑的文件是 .ccproj,而不是前面所述的 .cproj 文件。
【讨论】:
非常有用的信息,谢谢。我认为是 .ccproj 而不是 .csproj 需要额外的行 - 我已经进行了等待审核的编辑。【参考方案2】:严重性代码描述项目文件行抑制状态错误项目“C:\path\to\project\src\Frontend\Frontend.csproj”针对“.NETStandard,Version=v2.0”。以“.NETFramework,Version=v4.0”为目标的项目不能引用它。
根据错误,您的 Frontend.csproj
项目以 .NETStandard 2.0
为目标,并且您从一个以 .NETFramework V4.0 为目标的项目引用了 .NETStandard 2.0 项目。作为关于.NET Standard 的官方文档,您至少需要使您的项目以.NETFramework V4.6.1 为目标,以引用.NETStandard 2.0 项目或库。或者您需要选择较低的 .NET Standard 版本,更多详情需要关注.NET implementation support。
【讨论】:
以上是关于具有 .NET Standard 目标的 Azure 云服务经典的主要内容,如果未能解决你的问题,请参考以下文章
.Net 45 来自 .Net Standard 2.0 dll 的序列化