【问题标题】:Target .NET Core 2.0 with Azure Functions in Visual Studio 2017在 Visual Studio 2017 中使用 Azure Functions 定位 .NET Core 2.0
【发布时间】:2018-03-18 10:48:19
【问题描述】:

由于微软几天前发布了用于 Azure Functions 的 .NET Core 2.0,我试图了解如何在 VS2017 中针对 .NET Core 创建一个新的 Functions 项目。

我尝试了很多配置,但最终还是使用 .NET 4.7。

是否有人设法创建了针对 .NET Core 的新函数?

谢谢。

【问题讨论】:

    标签: azure azure-functions


    【解决方案1】:

    截至今天,我已经能够以“合理”直观的方式定位 .Net Standard 2.0,而无需编辑任何 .csproj 文件。

    您需要一个相当新的 Visual Studio 版本。我正在使用 Visual Studio Professional 15.5.3(尽管我猜这个社区会起作用)。

    您需要安装 Azure 开发工作负载。这将安装一个名为 Azure Functions 和 Web Jobs Tools 的扩展。

    到目前为止,还是普通的香草。还有 2 点对我来说根本不直观,但最终很容易做到 - 当你知道如何做时很容易!

      1234563您可以使用工具/扩展和更新来更新它,或查看https://marketplace.visualstudio.com/items?itemName=VisualStudioWebandAzureTools.AzureFunctionsandWebJobsTools
    1. 即使您已经这样做了,Visual Studio 对于让您创建面向 .net 2.0 的 Azure Functions 还是有点奇怪。当您转到 File/New Project 时,可用项目类型列表中没有任何变化,如果您选择 Azure Functions,则框架列表仅显示 .NET Framework *,没有 .NET Standard,没有 .NET Core。

    但如果此时你坚持并选择了 Azure Functions,那么你会得到一个我以前从未见过的新对话框,它允许你选择 Azure Functions v2 Preview (.NET Core)。

    现在,当我查看项目属性时,发现它的目标是 .NET Standard 2.0,而后者似乎包含 Microsfot.NETCore.Platforms (1.1.0)。那么这是否是.net core 2.0?不太确定,但对于我的目的来说已经足够好了,所以现在开始编写一些代码。

    干杯!

    【讨论】:

    • 有关 Azure Functions 和 Web 作业工具所需版本 15.0.31114.0 的详细信息。
    • 它不起作用。当我尝试将 .net core 2 项目引用到我的 Azure 函数时,出现错误:错误项目“X”以“netcoreapp2.0”为目标。它不能被以 '.NETStandard,Version=v2.0' 为目标的项目引用。
    • 使用当前版本的 Azure Functions 和 Web 作业工具 (15.9.02046),Azure Functions v2 不再是预览版。您可以手动更改您的.csproj 文件以将TargetFramework 更新为netstandard2.1,然后将AzureFunctionsVersion 更新为v2。您也不再需要对Microsoft.CSharp 的引用,因此可以删除此项目。
    【解决方案2】:

    Microsoft.NET.Sdk.Functions 包的 1.0.5 版本支持此功能。

    在您的 Azure Functions 项目中,执行以下操作:

    • Microsoft.NET.Sdk.Functions 包版本更新为1.0.5
    • 右键单击您的项目,单击Edit <projectname>.csproj 选项并将TargetFramework 元素值修改为netstandard2.0

    这将生成 .NET Standard 2.0 程序集,其中包含由 Azure Functions 工具创建的所有工件。

    【讨论】:

    • 尝试创建默认 HTTP 触发器,由于请求对象中缺少“GetQueryNameValuePairs”,因此无法编译。
    • 您只是缺少对公开该扩展方法 (Microsoft.AspNet.WebApi.Core) 所需的 WebApi 包的引用。添加包引用,您就完成了。
    • 做到了,现在编译器对所有 HttpRequest 方法都模棱两可。将等待 1.0.6 :-) 或 RTM VS2017。谢谢。
    • HttpRequest?还是 HttpRequestMessage?您的场景是否需要使用扩展方法?或者您只是想让 1.0 模板工作?您确实可以更改为使用 HttpRequest,因为这将是 2.0 中的首选方式。
    • 作为参考,这是 HTTP 触发器的默认 2.0 模板的外观:github.com/Azure/azure-webjobs-sdk-templates/blob/…。如果您使用 CLI func new 命令,您还将获得该新模板的功能。
    【解决方案3】:

    目前,这是一个手动过程。您需要创建 .NET Standard 2.0 库,手动添加 function.json 并使用核心工具运行它。

    Microsoft.NET.Sdk.Functions 包还不支持 .NET Standard 2.0 类库。这是将项目标识为 Visual Studio 的 Functions 项目并在构建期间从属性生成 function.json 的包。

    您仍然可以创作面向 .NET Standard 2.0 的 C# 类库,但您必须使用手动创作的 function.json。 C# 类库的模板在 Core Tools 中尚不可用,但您可以从 GitHub 获取示例。

    来自Develop Azure Functions on any platform

    更新:1.0.5 版本的 SDK 现在应该支持它,正如 Fabio 所提到的。

    【讨论】:

    • 自从博客最初发布以来,这已经发生了变化,现在 1.0.5 支持。该帖子将很快更新以反映这一点。
    猜你喜欢
    • 1970-01-01
    • 2018-06-21
    • 2018-09-13
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    相关资源
    最近更新 更多