具有 .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 云服务经典的主要内容,如果未能解决你的问题,请参考以下文章