更新管道时 Azure 函数缺少 dll 错误
Missing dll error from Azure function when updating pipeline
我有一个 Azure 函数,它会在我将 blob 复制到容器中时触发。该函数成功地将 blob 复制到子文件夹中进行处理,但我随后想更改管道计划以将管道触发到 运行。但是,当我尝试在代码中更改管道计划时,出现以下错误:
无法加载文件或程序集'Microsoft.Threading.Tasks,版本=1.0.12.0,文化=中性,...或其依赖项之一。系统找不到指定的文件。
我查看了 nuget 包列表以删除未使用的包并确保我使用的是最新版本。我还注释掉了我的 csx 文件中不必要的使用,但我仍然遇到错误。如果我注释掉管道更新调用,错误就会消失,函数 运行s 结束。
我的 project.json 文件看起来像这样(不是我已经包含注释掉的包以显示我之前尝试过的其他包):
{
"frameworks": {
"net46": {
"dependencies": {
////"Hyak.Common": "1.1.0",
"Microsoft.Azure.Common": "2.1.0",
"Microsoft.Azure.Common.Dependencies": "1.0.0",
"Microsoft.Azure.Management.DataFactories": "4.11.0",
////"Microsoft.Bcl": "1.1.10",
////"Microsoft.Bcl.Async": "1.0.168",
////"Microsoft.Bcl.Build": "1.0.21",
"Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.8"
////"Microsoft.Net.Http": "2.2.29"
}
}
}
}
最后,在csx文件中,我的用法如下(同样包括注释掉的行)
#r "System.Runtime"
#r "System.Threading.Tasks"
#r "Microsoft.WindowsAzure.Storage"
using System;
using System.Net;
using System.Threading.Tasks;
using System.Configuration;
//using Newtonsoft.Json;
using Microsoft.Azure;
//using Microsoft.Azure.Common;
using Microsoft.Azure.Management.DataFactories;
using Microsoft.Azure.Management.DataFactories.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
更新管道的代码如下:
client.Pipelines.CreateOrUpdate(resourceGroupName, dataFactoryName, new PipelineCreateOrUpdateParameters()
{
Pipeline = pl.Pipeline
});
log.Info($"Pipeline rescheduled for {slice}");
如果我 运行 这是一个控制台 application/web 应用程序(其中包括多个引用,包括 Microsoft.Threading.Tasks),管道更新工作正常但相同的代码不适用于我的蔚蓝功能。
有人知道我可能遗漏了什么 nuget packages/versions 或参考资料吗?
原来这个问题是由 project.lock.json 文件引用旧版本的 .Net(即 4.5,而不是 4.6)引起的。将它更新到 4.6 解决了这个问题。
为了完整起见,project.lock.json 文件现在内容如下:
{
"locked": false,
"version": 2,
"targets": {
".NETFramework,Version=v4.6": {}
},
"libraries": {},
"projectFileDependencyGroups": {
"": [],
".NETFramework,Version=v4.6": []
}
}
我有一个 Azure 函数,它会在我将 blob 复制到容器中时触发。该函数成功地将 blob 复制到子文件夹中进行处理,但我随后想更改管道计划以将管道触发到 运行。但是,当我尝试在代码中更改管道计划时,出现以下错误:
无法加载文件或程序集'Microsoft.Threading.Tasks,版本=1.0.12.0,文化=中性,...或其依赖项之一。系统找不到指定的文件。
我查看了 nuget 包列表以删除未使用的包并确保我使用的是最新版本。我还注释掉了我的 csx 文件中不必要的使用,但我仍然遇到错误。如果我注释掉管道更新调用,错误就会消失,函数 运行s 结束。
我的 project.json 文件看起来像这样(不是我已经包含注释掉的包以显示我之前尝试过的其他包):
{
"frameworks": {
"net46": {
"dependencies": {
////"Hyak.Common": "1.1.0",
"Microsoft.Azure.Common": "2.1.0",
"Microsoft.Azure.Common.Dependencies": "1.0.0",
"Microsoft.Azure.Management.DataFactories": "4.11.0",
////"Microsoft.Bcl": "1.1.10",
////"Microsoft.Bcl.Async": "1.0.168",
////"Microsoft.Bcl.Build": "1.0.21",
"Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.8"
////"Microsoft.Net.Http": "2.2.29"
}
}
}
}
最后,在csx文件中,我的用法如下(同样包括注释掉的行)
#r "System.Runtime"
#r "System.Threading.Tasks"
#r "Microsoft.WindowsAzure.Storage"
using System;
using System.Net;
using System.Threading.Tasks;
using System.Configuration;
//using Newtonsoft.Json;
using Microsoft.Azure;
//using Microsoft.Azure.Common;
using Microsoft.Azure.Management.DataFactories;
using Microsoft.Azure.Management.DataFactories.Models;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
更新管道的代码如下:
client.Pipelines.CreateOrUpdate(resourceGroupName, dataFactoryName, new PipelineCreateOrUpdateParameters()
{
Pipeline = pl.Pipeline
});
log.Info($"Pipeline rescheduled for {slice}");
如果我 运行 这是一个控制台 application/web 应用程序(其中包括多个引用,包括 Microsoft.Threading.Tasks),管道更新工作正常但相同的代码不适用于我的蔚蓝功能。
有人知道我可能遗漏了什么 nuget packages/versions 或参考资料吗?
原来这个问题是由 project.lock.json 文件引用旧版本的 .Net(即 4.5,而不是 4.6)引起的。将它更新到 4.6 解决了这个问题。
为了完整起见,project.lock.json 文件现在内容如下:
{
"locked": false,
"version": 2,
"targets": {
".NETFramework,Version=v4.6": {}
},
"libraries": {},
"projectFileDependencyGroups": {
"": [],
".NETFramework,Version=v4.6": []
}
}