Компиляция функции Azure v1 (.NET Framework) дает исключение FileNotFoundException для Microsoft.Azure.WebJobs - PullRequest
0 голосов
/ 12 января 2019

У меня есть проект Azure Functions v1 (ala .NET Framework) в Visual Studio 2017. Он долго и хорошо собирался / компилировался, теперь он выдает следующее исключение FileNotFoundException с жалобой на невозможность найти «Microsoft.Azure». WebJobs 'v2.2. Дело в том, что этот проект создавался просто отлично, и вдруг эта ошибка возникает.

Раньше я закрывал Visual Studio, затем снова открывал, и сборка работала. Или даже если вы очистите решение, сборка будет работать. Проблема в том, что теперь я получаю эту ошибку, что бы я ни делал. Я даже перезагрузил компьютер!

Здесь полное исключение компилятора, отображаемое в Visual Studio 2017 для проекта Azure Functions v1:

Severity    Code    Description Project File    Line    Suppression State
Error       System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Azure.WebJobs, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.Azure.WebJobs, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
   at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)
   at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
   at System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
   at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg)
   at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent)
   at System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeType type, RuntimeType caType, Boolean inherit)
   at System.Attribute.InternalGetAttributeUsage(Type type)
   at System.Attribute.InternalParamGetCustomAttributes(ParameterInfo param, Type type, Boolean inherit)
   at MakeFunctionJson.ParameterInfoExtensions.GetDisabledAttribute(ParameterInfo parameterInfo)
   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
   at MakeFunctionJson.MethodInfoExtensions.GetDisabled(MethodInfo method)
   at MakeFunctionJson.MethodInfoExtensions.HasUnsuportedAttributes(MethodInfo method, String& error)
   at MakeFunctionJson.FunctionJsonConverter.<GenerateFunctions>d__9.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at MakeFunctionJson.FunctionJsonConverter.TryGenerateFunctionJsons()
   at MakeFunctionJson.FunctionJsonConverter.TryRun()

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

Error generating functions metadata
    Company.Assembly    C:\Users\chris\.nuget\packages\microsoft.net.sdk.functions\1.0.24\build\netstandard1.0\Microsoft.NET.Sdk.Functions.Build.targets    41  

Обратите внимание, что в последней строке отображаются метаданные функций, генерирующих ошибки, и отображаемым путем является путь netstandard1.0. Это выглядит как основная причина проблемы. Однако этот проект является проектом .NET Framework 4.6.1; не .NET Standard 1.0.

Буду очень признателен за любые предложения, которые вы можете предложить. Кроме того, я опубликую свое решение, как только выясню это. Спасибо!

Обновление 1 : Ранее я ссылался на пакет NuGet, созданный для .NET Standard 2.0, поэтому я удалил ссылку для этого и нашел пару ссылок на пакеты NETStandard и NETCore в пакете ' .config ', поэтому я удалил их.

<package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="net461" />
<package id="NETStandard.Library" version="1.6.1" targetFramework="net461" />

Удаление этих двух ссылок НЕ помогло решить проблему. Кажется, что он все еще пытается построить проект Azure Functions v1 на основе .NET Framework, как если бы это был .NET Standard 1.0.

Обновление 2 : я попытался удалить локальную папку C:\Users\chris\.nuget\packages\microsoft.net.sdk.functions, на которую ссылается исключение при сборке, чтобы посмотреть, не устранит ли это проблему путем повторной загрузки из Nuget файлов сборки для функций Azure. v1; это сценарий сборки, который вызывает исключение. Visual Studio повторно загрузил файлы из Nuget, но это также НЕ устранило проблему.

1 Ответ

0 голосов
/ 12 января 2019

Обойдя вокруг и выяснив, что может быть проблемой, я наконец исправил ее!

Очевидно, пакет Microsoft.Azure.WebJobs.ServiceBus v2.3 NuGet НЕ совместим с функциями Azure v1 на основе .NET Framework. Я удалил ссылку Nuget, затем добавил ссылку на Microsoft.Azure.WebJobs.ServiceBus v2.2, и сборка снова начала работать. Так много для обратной совместимости! Я надеюсь, что это поможет другим решить эту проблему, когда она возникнет.

...