找不到工作职能。尝试让你的工作 类 和方法 public
No job functions found. Try making your job classes and methods public
首先,我查看了具有相同错误消息的其他 SO 帖子,none 似乎解决了我的问题。我尝试了很多排列和选项。我的函数构建良好但不会在 CLI 中 运行,我收到以下神秘错误。 MSFT 文档似乎也没有答案。
No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. config.UseServiceBus(), config.UseTimers(), etc.).
我正在尝试 运行 计时器作业,然后将一组消息写入事件中心。我错过了什么?我已经为此奋斗了几个小时。
函数:
[FunctionName("CreateData")]
public static async Task Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer,
[EventHub("murraytest", Connection = "evingest")] IAsyncCollector<string> myeventhub,
TraceWriter log)
{
await myeventhub.AddAsync("data1");
await myeventhub.AddAsync("data2");
await myeventhub.AddAsync("data3");
log.Info($"COMPLETED: {DateTime.Now}");
}
local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"Eventhub": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "",
"evingest": "Endpoint=sb://example.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=LtcqBLT5VWjg0dGMdIvxCcEGs8902010Y6y14iGg="
}
}
包
function.json - 缺少任何 eventhub 绑定!
{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0",
"configurationSource": "attributes",
"bindings": [
{
"type": "timerTrigger",
"schedule": "0 */5 * * * *",
"useMonitor": true,
"runOnStartup": false,
"name": "myTimer"
}
],
"disabled": false,
"scriptFile": "..\bin\AzFuncs.dll",
"entryPoint": "AzFuncs.Function1.Run"
}
您应该升级到最新的 Microsoft.NET.Sdk.Functions
(1.0.6
截至今天)和 Microsoft.Azure.WebJobs.Service.Bus
(2.1.0-beta4
如果 运行 在完整框架上)。您可能需要先删除 ServiceBus 引用才能升级 SDK。
Microsoft.Azure.Eventhubs
包也需要删除。所有相关类型等都在 Microsoft.Azure.WebJobs.Service.Bus
还记得在包管理器中检查 "Include prerelease" 以找到 2.1.0-beta4
。
我发现的另一个陷阱,尤其是当您从另一个项目或版本转换时。
在 VS csproj 文件中,确保存在 AzureFunctionsVersion
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
</PropertyGroup>
...etc
该工具会自动添加它,但如果您正在修改缺少它的项目,则不会添加。希望这可以帮助您节省我花费的 3 个小时 :-)。
我很欣赏这里的其他答案。但就我而言 none 他们中的 VS Code.
我仍在尝试使用 .NET Core SDK 版本 2.1,并且我的 Azure 函数必须使用所有旧版本的依赖项。
即使一切正常,我仍然无法在本地 运行 该功能。原来还有一小步要走:
首先,发布你的项目dotnet publish
发布的东西应该在bin/Debug/netstandard2.0
。只需进入此文件夹并 运行 您的函数:
cd bin/Debug/netstandard2.0 # I was using netstandard2.0 framework
func start --build # You can add --verbose flag for more detailed outputs
瞧!而已。澄清一下,这是我的版本:
- .NET核心SDK版本:2.1.810
- Azure CLI 版本:2.12.0
- Azure 函数版本:v2
- Microsoft.NET.Sdk.Functions: 1.0.37
如果它从 bin/Debug/netcoreapp3.1/
等开始工作,这是因为您在根目录中缺少一些需要的文件或在某些文件中缺少部分。 (例如:host.json)
我设法通过 运行 解决了这个问题 func init --force
以恢复初始设置并使用 git 找到缺失的部分。
在我的例子中,我只是 运行 从一个实际的函数目录中执行命令。您应该 运行 它来自函数项目的根目录!
在我的场景中,对于 现有项目,在 windows
中安装 azure 函数设置后,我错过了在 .csproj 文件中提供参考
就是这里
你可以在 VS Code 运行 命令 Func init --force 和 Select Dotnet 模板 和然后删除自动创建的 .csproj 文件。
local.settings.json
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=false",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
}
.csproj 文件
<ItemGroup>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
</ItemGroup>
如果你像我一样使用 visual studio 代码,我希望有人能帮助你。
如果您将 .NET 5 中的 Azure Functions 与进程外执行模型一起使用,您需要将 FunctionName
替换为 Function
,否则将无法检测到该函数。
之前:
[FunctionName("CreateData")]
之后:
[Function("CreateData")]
当我更改项目名称和其他一些重构时,它发生在我身上。更改后它在那台机器上工作,但有趣的是当我切换到另一台机器时,我得到了这个错误 - 即使它是相同的代码。
我的解决方案基本上是创建一个随机的新 azure 函数,然后再次 运行ning。接下来 运行.
我的所有功能都出现在 cli 上
就我而言(net core 3.1 上的 v3)这是一个奇怪的情况,不知何故它已从 csproj 文件中删除。
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
我从错误的文件夹中 运行“func start”。确保你是 运行 它来自 azure 函数的根文件夹。这对于任何语言都应该是正确的(我正在使用 python)
出于某种原因,我的工作项目在 csproj 文件中复制了以下信息,因此 运行 在本地 运行 AzFunction 时出现了同样的错误。我删除了 ext运行eous 行,它工作得很好。
<ItemGroup>
<None Include="Function1.cs" />
</ItemGroup>
我的问题与其他答案不同:local.settings.json
明确包含在 .gitignore
定义中。因此,文件曾一度从文件夹中删除,我的本地构建无法理解哪个是正确的运行时。
我从示例项目中提取了默认 local.settings.json
来检索文件。
就我而言,线索是控制台输出开始时的这条消息:
Can't determine project language from files. Please use one of [--csharp, --javascript, --typescript, --java, --python, --powershell]
添加 --csharp
参数就成功了。
我收到错误消息
no job functions found
当我的防火墙阻止 azure 函数程序连接到互联网时。
首先,我查看了具有相同错误消息的其他 SO 帖子,none 似乎解决了我的问题。我尝试了很多排列和选项。我的函数构建良好但不会在 CLI 中 运行,我收到以下神秘错误。 MSFT 文档似乎也没有答案。
No job functions found. Try making your job classes and methods public. If you're using binding extensions (e.g. ServiceBus, Timers, etc.) make sure you've called the registration method for the extension(s) in your startup code (e.g. config.UseServiceBus(), config.UseTimers(), etc.).
我正在尝试 运行 计时器作业,然后将一组消息写入事件中心。我错过了什么?我已经为此奋斗了几个小时。
函数:
[FunctionName("CreateData")]
public static async Task Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer,
[EventHub("murraytest", Connection = "evingest")] IAsyncCollector<string> myeventhub,
TraceWriter log)
{
await myeventhub.AddAsync("data1");
await myeventhub.AddAsync("data2");
await myeventhub.AddAsync("data3");
log.Info($"COMPLETED: {DateTime.Now}");
}
local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"Eventhub": "UseDevelopmentStorage=true",
"AzureWebJobsDashboard": "",
"evingest": "Endpoint=sb://example.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=LtcqBLT5VWjg0dGMdIvxCcEGs8902010Y6y14iGg="
}
}
包
function.json - 缺少任何 eventhub 绑定!
{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0",
"configurationSource": "attributes",
"bindings": [
{
"type": "timerTrigger",
"schedule": "0 */5 * * * *",
"useMonitor": true,
"runOnStartup": false,
"name": "myTimer"
}
],
"disabled": false,
"scriptFile": "..\bin\AzFuncs.dll",
"entryPoint": "AzFuncs.Function1.Run"
}
您应该升级到最新的 Microsoft.NET.Sdk.Functions
(1.0.6
截至今天)和 Microsoft.Azure.WebJobs.Service.Bus
(2.1.0-beta4
如果 运行 在完整框架上)。您可能需要先删除 ServiceBus 引用才能升级 SDK。
Microsoft.Azure.Eventhubs
包也需要删除。所有相关类型等都在 Microsoft.Azure.WebJobs.Service.Bus
还记得在包管理器中检查 "Include prerelease" 以找到 2.1.0-beta4
。
我发现的另一个陷阱,尤其是当您从另一个项目或版本转换时。
在 VS csproj 文件中,确保存在 AzureFunctionsVersion
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
</PropertyGroup>
...etc
该工具会自动添加它,但如果您正在修改缺少它的项目,则不会添加。希望这可以帮助您节省我花费的 3 个小时 :-)。
我很欣赏这里的其他答案。但就我而言 none 他们中的 VS Code.
我仍在尝试使用 .NET Core SDK 版本 2.1,并且我的 Azure 函数必须使用所有旧版本的依赖项。
即使一切正常,我仍然无法在本地 运行 该功能。原来还有一小步要走:
首先,发布你的项目
dotnet publish
发布的东西应该在
bin/Debug/netstandard2.0
。只需进入此文件夹并 运行 您的函数:cd bin/Debug/netstandard2.0 # I was using netstandard2.0 framework func start --build # You can add --verbose flag for more detailed outputs
瞧!而已。澄清一下,这是我的版本:
- .NET核心SDK版本:2.1.810
- Azure CLI 版本:2.12.0
- Azure 函数版本:v2
- Microsoft.NET.Sdk.Functions: 1.0.37
如果它从 bin/Debug/netcoreapp3.1/
等开始工作,这是因为您在根目录中缺少一些需要的文件或在某些文件中缺少部分。 (例如:host.json)
我设法通过 运行 解决了这个问题 func init --force
以恢复初始设置并使用 git 找到缺失的部分。
在我的例子中,我只是 运行 从一个实际的函数目录中执行命令。您应该 运行 它来自函数项目的根目录!
在我的场景中,对于 现有项目,在 windows
中安装 azure 函数设置后,我错过了在 .csproj 文件中提供参考就是这里
你可以在 VS Code 运行 命令 Func init --force 和 Select Dotnet 模板 和然后删除自动创建的 .csproj 文件。
local.settings.json
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=false",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
}
.csproj 文件
<ItemGroup>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.11" />
</ItemGroup>
如果你像我一样使用 visual studio 代码,我希望有人能帮助你。
如果您将 .NET 5 中的 Azure Functions 与进程外执行模型一起使用,您需要将 FunctionName
替换为 Function
,否则将无法检测到该函数。
之前:
[FunctionName("CreateData")]
之后:
[Function("CreateData")]
当我更改项目名称和其他一些重构时,它发生在我身上。更改后它在那台机器上工作,但有趣的是当我切换到另一台机器时,我得到了这个错误 - 即使它是相同的代码。
我的解决方案基本上是创建一个随机的新 azure 函数,然后再次 运行ning。接下来 运行.
我的所有功能都出现在 cli 上就我而言(net core 3.1 上的 v3)这是一个奇怪的情况,不知何故它已从 csproj 文件中删除。
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
我从错误的文件夹中 运行“func start”。确保你是 运行 它来自 azure 函数的根文件夹。这对于任何语言都应该是正确的(我正在使用 python)
出于某种原因,我的工作项目在 csproj 文件中复制了以下信息,因此 运行 在本地 运行 AzFunction 时出现了同样的错误。我删除了 ext运行eous 行,它工作得很好。
<ItemGroup>
<None Include="Function1.cs" />
</ItemGroup>
我的问题与其他答案不同:local.settings.json
明确包含在 .gitignore
定义中。因此,文件曾一度从文件夹中删除,我的本地构建无法理解哪个是正确的运行时。
我从示例项目中提取了默认 local.settings.json
来检索文件。
就我而言,线索是控制台输出开始时的这条消息:
Can't determine project language from files. Please use one of [--csharp, --javascript, --typescript, --java, --python, --powershell]
添加 --csharp
参数就成功了。
我收到错误消息
no job functions found
当我的防火墙阻止 azure 函数程序连接到互联网时。