[英]System.IO.FileLoadException - Could not load file or Assembly Microsoft.WindowsAzure.Storage
[英]Could not load file or assembly 'Microsoft.WindowsAzure.Storage' Azure Functions
我目前正在使用在Visual Studio中創建的Azure函數。 它是一個計時器函數,它調用一些通用代碼來寫入隊列。
在本地運行代碼不會引起任何問題。 運行正常,但是在發布時出現以下錯誤:
無法加載文件或程序集“ Microsoft.WindowsAzure.Storage,版本= 9.1.0.0,區域性=中性,PublicKeyToken = 31bf3856ad364e35”或其依賴項之一。 系統找不到指定的文件。|| System.IO.FileNotFoundException:無法加載文件或程序集“ Microsoft.WindowsAzure.Storage,版本= 9.1.0.0,Culture =中性,PublicKeyToken = 31bf3856ad364e35”或其依賴項之一。 該系統找不到指定的文件。 文件名:JobGetter.TimedJob.Run的Esperanto.Core.Function.JobGetterLogic.SendJobsToQue()處的文件名:'Microsoft.WindowsAzure.Storage,Version = 9.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'(TimerInfo myTimer,TraceWriter log)
這是我的網絡作業代碼:
public static class TimedJob
{
[FunctionName("TimedJob")]
public static void Run([TimerTrigger("0 */1 * * * *")]TimerInfo myTimer, TraceWriter log)
{
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
try
{
var brain = new CoreLogic.Function.JobGetterLogic();
var result = brain.SendJobsToQue();
}
catch (Exception e)
{
log.Info(e.Message + "||" + e.ToString());
}
}
}
假設您使用的是Azure Functions運行時v1(當前生產版本),它將使用版本7.2.1
WindowsAzure.Storage
程序集。 由於是運行時來控制加載哪個版本,因此您的實現必須遵循並使用相同的版本。
要解決此問題,請將對WindowsAzure.Storage
所有引用(包括傳遞引用)更改為7.2.1
。
當前沒有像Azure Functions支持的綁定重定向那樣的東西。
我的是因為Newtonsoft.Json版本,但我什至在安裝WindowsAzure.Storage軟件包之前就已經知道了。
它在輸出中給了我這個:
NU1107:為Newtonsoft.Json檢測到版本沖突。 直接從項目中引用該軟件包即可解決此問題。
PMTool.AzureFunctions-> WindowsAzure.Storage 9.1.0-> Newtonsoft.Json(> = 10.0.2)PMTool.AzureFunctions-> Microsoft.NET.Sdk.Functions 1.0.6-> Newtonsoft.Json(= 9.0.1)。
然后回滾。
因此,Functions SDK中的Newtonsoft.Json版本為9.0.1,但在Azure存儲中,版本為10.0.2。
並且可以肯定的是,如果這樣發布,則會出現此錯誤:
“無法加載文件或程序集'Microsoft.WindowsAzure.Storage,版本= 9.1.0.0,文化=中性,PublicKeyToken = 31bf3856ad364e35'或其依賴項之一。系統找不到指定的文件。”
因為根本沒有引用。
這可能不是您的確切問題,但可能會給您一個線索。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.