Я подробно и подробно описал проблему и вопрос в этой теме System.NullReferenceException в AppServiceResponse и System.BadImageFormatException UWP с пакетом моста рабочего стола WPF, но так и не нашел ответа, что может быть причиной этого сбоя.
Ссылка на тему Центр разработки для Windows выше описывает сборку, показывает весь используемый код с примерами, включая попытки решения проблемы и другие подробности. Поэтому я помещу только основную часть задачи в эту тему stackoverflow, чтобы избежать текстовой перегрузки в сообщении и сосредоточусь только на System.BadImageFormatException, который провоцирует нуль Приложение.Соединение в Проект пакета приложений Windows с подключением от UWP к приложению WPF, созданному в соответствии с UWP с настольным расширением — урок, часть 3, (отправка запроса на рабочий стол расширение, чтение значений ключей реестра и отправка запроса из расширения рабочего стола в UWP, обработка запросов из кода рабочего стола).
Я пытался исправить это разными способами (также описанными выше), но не могу найти никакой причины, по крайней мере, чтобы знать, где искать проблему, может быть, я что-то пропустил, но я не могу найти соответствующие полезные ответы в любом месте в Интернете
Это сообщение, но System.Runtime.WindowsRuntime.dll уже есть в ссылках:
System.BadImageFormatException HResult=0x80131058 Message=Could not load file or assembly 'System.Runtime.WindowsRuntime, Version=4.0.10.0, Culture=neutral, PublicKeyToken=...' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) Source=WpfApp1
StackTrace: at WpfApp1.MainWindow.d__4.MoveNext() in C:\Users\User\Desktop\UWP\App\WpfApp1\MainWindow.xaml.cs:line 58 at System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at WpfApp1.MainWindow.InitializeAppServiceConnection() at WpfApp1.MainWindow..ctor() in C:\Users\User\Desktop\UWP\App\WpfApp1\MainWindow.xaml.cs:line 37 Inner Exception 1: BadImageFormatException: Cannot load a reference assembly for execution.
Любой совет, руководство или пример будут очень полезны
РЕДАКТИРОВАТЬ 1: ******************************************************* ****************************************************
Я пробовал все эти комбинации ниже двумя способами Отлаживать и Выпускать, а также изменил «настройки компилятора» платформы решения, из строки меню цели VS с «Любой процессор» на «X86» и наоборот, как показано в System.BadImageFormatException: не удалось загрузить файл или сборку [дубликат], и как от Solution->Properties->Configuration Properties->Configuration->Project contexts, так и от Project->Properties->Build->Platform target, но работоспособность и отказ возникают одинаково во всех случаях:
Текущий Свойства конфигурации:
Console Launcher - AnyCPU
UWP - x86
Package - x86
WPF - AnyCPU
WinForms - AnyCPU
Настройте все приложения Solution на x86:
Console Launcher - x86
UWP - x86
Package - x86
WPF - x86
WinForms - x86
или x64:
Console Launcher - x64
UWP - x64
Package - x64
WPF - x64
WinForms - x64
выполняет те же результаты по сценарию:
Уроки, часть 1 «Запуск WinForms из UWP» и Часть 2 "Передача параметров" работают успешно, запускает приложение, отправляет параметры с загрузкой WPF или WinForms.
Сценарии из урок Часть 3 приводят к тому же сбою, InitializeAppServiceConnection(); выдает System.BadImageFormatException с прямой отладкой, пытается запустить WPF или WinForms из UWP, ничего не делает с запрошенным приложением, просто показывает Приставка Launcher на секунду без каких-либо сообщений, а Вызвать код рабочего стола для чтения регистрационного ключа выдает тот же System.NullReferenceException
Настройте все приложения на AnyCPU, кроме UWP, для которого путь вывода отладки бина, поскольку раскрывающееся меню целей платформы из свойств решения или приложения включает только x64, x86, ARM, ARM64:
Console Launcher - AnyCPU
UWP - x86
Package - AnyCPU
WPF - AnyCPU
WinForms - AnyCPU
бросает:
Severity Code Description Project File Line Suppression State Error MSB3270 There was a mismatch between the processor architecture of the project being built "x86" and the processor architecture of the reference "C:\Users\User\Desktop\UWP_BD\UWP_BD\Launcher\bin\Debug\Launcher.exe", "AMD64". This mismatch may cause runtime failures. Please consider changing the targeted processor architecture of your project through the Configuration Manager so as to align the processor architectures between your project and references, or take a dependency on references with a processor architecture that matches the targeted processor architecture of your project. Package C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets 2106
а также:
Severity Code Description Project File Line Suppression State Warning The element 'PropertyGroup' in namespace 'http://schemas.microsoft.com/developer/msbuild/2003' has invalid child element 'WapProjPath' in namespace 'http://schemas.microsoft.com/developer/msbuild/2003'. List of possible elements expected: 'Property, VisualStudioVersion, MinimumVisualStudioVersion, AdditionalFileItemNames, AllowUnsafeBlocks, AppConfigForCompiler, ApplicationIcon, ApplicationRevision, ApplicationVersion, AppDesignerFolder, AspNetConfiguration, AspNetCoreHostingModel, AspNetCoreModuleName, AssemblyKeyContainerName, AssemblyKeyProviderName, AssemblyName, AssemblyOriginatorKeyFile, AssemblyOriginatorKeyFileType, AssemblyOriginatorKeyMode, AssemblyType, AutoGenerateBindingRedirects, AutorunEnabled, BaseAddress, BootstrapperComponentsLocation, BootstrapperComponentsUrl, BootstrapperEnabled, CharacterSet, CheckForOverflowUnderflow, CLRSupport, UseDebugLibraries, CodePage, Configuration, ConfigurationName, ConfigurationOverrideFile, CreateDesktopShortcut, CreateWebPageOnPublish, CurrentSolutionConfigurationContents, DebugSecurityZoneURL, DebugSymbols, DebugType, DefaultClientScript, DefaultHTMLPageLayout, DefaultTargetSchema, DefineConstants, DefineDebug, DefineTrace, DelaySign, DisableLangXtns, DisallowUrlActivation, CodeAnalysisAd.... Package C:\Users\User\Desktop\UWP_BD\UWP_BD\Package\Package.wapproj 49
и x64:
Console Launcher - AnyCPU
UWP - x64
Package - AnyCPU
WPF - AnyCPU
WinForms - AnyCPU
Severity Code Description Project File Line Suppression State Error MSB3270 There was a mismatch between the processor architecture of the project being built "MSIL" and the processor architecture of the reference "C:\Users\User\Desktop\UWP_BD\UWP_BD\UWP_Control\bin\x64\Debug\UWP_Control.exe", "AMD64". This mismatch may cause runtime failures. Please consider changing the targeted processor architecture of your project through the Configuration Manager so as to align the processor architectures between your project and references, or take a dependency on references with a processor architecture that matches the targeted processor architecture of your project. Package C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets 2106
Я не уверен, возможно, мне следует изменить Минимальная версия на Юбилейное издание или на Windows 10 (10.0; сборка 10214) с созданием UWP, который по умолчанию Windows 10 (10.0; сборка 10586):
Обновлено еще раз: ******************************************************* ****************************************************
Я использую Windows 10 Pro 64-bit OS, x64-basesd processor с Visual Studio 2019 Version 16.1.4, целевая платформа: .NET Framework 4.7.2 Version 4.7.03056, Microsoft.NETCore.Universal Windows Platform 6.2.8 папка пути C:\Program Files (x86)\Microsoft SDKs\Windows включает папки: v7.0A, v8.1, v8.1A, v10.0A
в .csproj:
<TargetPlatformVersion Condition = " '$(TargetPlatformVersion)' == '' ">10.0.14393.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.14393.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
У меня такой же сбой System.BadImageFormatException, если поменять Минимальная версия на Юбилейный выпуск Windows 10 (10.0; сборка 14393) так же, как и для Целевая версия, как с предыдущей, так и с новой сборкой без кода Часть 1 и Часть 2.
Также я последовал предложению Рой Ли в System.NullReferenceException в AppServiceResponse и System.BadImageFormatException UWP с пакетом моста рабочего стола WPF по Центр разработки для Windows, «Чтобы создать более простую демонстрацию, чтобы воспроизвести проблему». Итак, я создал новый пакет только с UWP и WPF только в соответствии с UWP с настольным расширением — часть 3 с UWP_FullTrust_3.
В предыдущей сборке я пропустил SingleInstance.cs в приложении WPF, но включение этого кода в предыдущую или новую сборку (без "Запущенного приложения" и "передачи параметра") выдает ошибку:
Severity Code Description Project File Line Suppression State Error CS0017 Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point. FullTrust C:\Users\User\Desktop\UWP_BD2\Solution1\FullTrust\SingleInstance.cs 57 Active
в этой части кода:
[STAThread]
public static void Main(string[] args)
{
SingleInstanceManager manager = new SingleInstanceManager();
manager.Run(args);
}
РЕДАКТИРОВАТЬ 3: ******************************************************* ****************************************************
Итак, для Windows 10 Pro 64-bit OS, Version 1803 (OS Build 17134.829) подходящей целевой версией должна быть 17134, насчет минимальной версии не уверен:
Я обновил Windows всего несколько часов назад. Что-то пошло не так в меню «Цели» при создании Windows Application Package Project или UWP,, который не содержит 17134, с более высокой версией я получил это сообщение:
По какой-то причине в меню выбора цели нет 17134 и его нет для Windows Application Package Project:
РЕДАКТИРОВАТЬ 4: ******************************************************* ****************************************************
Я установил SDK версии 17134 и выбрал 17134 для целевой версии с проектом пакета приложений Windows и созданием UWP.
Я добавил код, ссылки, настройки, но получил ту же ошибку! Я не уверен, смогу ли я это исправить. Возможно, полный тестовый проект с реальным кодом поможет.
Итак, вот полное решение репозиторий UWP_desktop_bridge. Это UWP и средство запуска консоли для WPF на основе Часть 1, Часть 2, Часть 3 урока UWP-полное доверие от Стефан Вик MSFT.
Без InitializeAppServiceConnection(); сценариев из Часть 1Часть 2 работает, но с включением InitializeAppServiceConnection(); в WPF InitializeComponent(); для получения функционала Часть 3 я получил:
System.BadImageFormatException HResult=0x80131058 Message=Could not load file or assembly 'System.Runtime.WindowsRuntime, Version=4.0.10.0, Culture=neutral, PublicKeyToken=...' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) Source=WpfApp1
StackTrace: at WpfApp1.MainWindow.d__4.MoveNext() in C:\Users\User\Desktop\UWP_desktop-bridge\Solution1\WpfApp1\MainWindow.xaml.cs:line 59 at System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at WpfApp1.MainWindow.InitializeAppServiceConnection() at WpfApp1.MainWindow..ctor() in C:\Users\User\Desktop\UWP_desktop-bridge\Solution1\WpfApp1\MainWindow.xaml.cs:line 38 Inner Exception 1: BadImageFormatException: Cannot load a reference assembly for execution.
и то же самое с SingleInstance.cs при использовании этой части кода:
[STAThread]
public static void Main(string[] args)
{
SingleInstanceManager manager = new SingleInstanceManager();
manager.Run(args);
}
Severity Code Description Project File Line Suppression State Error CS0017 Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point.
Это аналогичная функциональность и отказ, как и в моих предыдущих проектах.
РЕДАКТИРОВАТЬ 5: ******************************************************* *******************************************************
На данный момент я тщательно создал сборку для копирования и вставки на основе Демонстрация ZhuMingHao/AppSerViceTest, данного в ответе Нико Чжу - MSFT на связанный вопрос Отправить args.Result для распознавания речи в качестве параметра в пакете UWP desktop-bridge:
Отладка успешно загружает UWP и WPF. При нажатии на кнопку Click с UWPАппсервицетест/аппсервицетест/MainPage.xaml.cs:
У меня такое же исключение:
System.NullReferenceException: 'Object reference not set to an instance of an object.
При нажатии на кнопку WPFSend Message просто закрывает WPF приложение, UWPStatusBlock и InfoBlock ничего не показывает.
Прямая отладка WPF и нажатие кнопки Send message выдает другое содержимое того же System.BadImageFormatException:
System.BadImageFormatException HResult=0x80131058 Message=Could not load file or assembly 'System.Runtime.WindowsRuntime, Version=4.0.10.0, Culture=neutral, PublicKeyToken=...' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058) Source=WpfApp1 StackTrace:
at WpfApp1.MainWindow.<Button_Click_1>d__5.MoveNext() in C:\Users\User\Desktop\UWP\UWP_DB_SR\WpfApp1\MainWindow.xaml.cs:line 91 at System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start[TStateMachine](TStateMachine& stateMachine) at WpfApp1.MainWindow.Button_Click_1(Object sender, RoutedEventArgs e) at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e) at System.Windows.Controls.Primitives.ButtonBase.OnClick() at System.Windows.Controls.Button.OnClick() at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e) at System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e) at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent) at System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e) at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args) at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted) at System.Windows.Input.InputManager.ProcessStagingArea() at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg) at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame) at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Application.RunDispatcher(Object ignore) at System.Windows.Application.RunInternal(Window window) at System.Windows.Application.Run(Window window) at System.Windows.Application.Run() at WpfApp1.App.Main() Inner Exception 1: BadImageFormatException: Cannot load a reference assembly for execution.
РЕШЕНИЕ: ******************************************************* *******************************************************
Ответ решения, данный Стефан Вик MSFT на вопрос, описанный также в теме WDC System.NullReferenceException в AppServiceResponse и System.BadImageFormatException UWP с пакетом моста рабочего стола WPF по System.BadImageFormatException с конкретный коммуникационный проект UWP для настольных компьютеров и приложений моста, на основе примера UWP с настольным расширением — часть 3UWP-FullTrust/UWP_FullTrust_3/, а также решателя моей копии решения Нико Чжу - MSFTZhuMingHao/AppSerViceTest:
Мой неверный:
Должна быть правильная настройка ссылок:
Возможный дубликат System.BadImageFormatException: не удалось загрузить файл или сборку
@Stefan Wick MSFT Здравствуйте, прежде всего, спасибо за ваши отзывы, руководство и примеры! Пожалуйста, проверьте мои результаты в добавленном разделе "EDIT" выше.
@Rekshino Здравствуйте, я попытался изменить платформу решения в строке меню цели VS с «Любой процессор» на «X86» и наоборот, но результат тот же.
Попробуйте изменить его напрямую через проект->свойства->сборка->целевая платформа.
@Rekshino Результат в разделе EDIT проверен с изменением двух способов от Solution->Properties->Configuration Properties->Configuration->Project contexts, а также от Project->Properties->Build->Platform target. Должен ли я изменить Минимальная версия на Юбилейное издание или на Windows 10 (10.0; сборка 10214) с созданием UWP, который по умолчанию Windows 10 (10.0; сборка 10586)?
Я не знаю. Попытайся..
Минимальная версия должна быть не ниже 14393 (она же Windows 10 Anniversary Update 1607), потому что именно тогда мы представили функцию Desktop Bridge. На какой версии Windows 10 вы работаете? Какую версию Windows 10 SDK вы используете? Ваша целевая версия должна соответствовать этому.
@Stefan Wick MSFT Извините за поздний ответ. Я добавил новый EDIT 2 в вопрос. Пожалуйста, проверьте мои результаты, я до сих пор не могу понять проблему
Можете ли вы поделиться своим полным тестовым проектом? Не видя вашего фактического кода, мы можем только строить догадки. Кстати, мне любопытно, почему вы устанавливаете целевую версию на 14393? Целевая версия означает самую высокую версию Windows, с которой вы тестировали (она отличается от минимальной версии, которая является минимальной версией, на которой может работать приложение). Вы действительно используете эту версию ОС и SDK? Ему уже пару лет. Можете ли вы попробовать текущую версию ОС и SDK?
@Stefan Wick MSFT Привет, пожалуйста, проверьте мой РЕДАКТИРОВАТЬ 3. Итак, OS Build 17134.829 подходящая целевая версия должна быть 17134, не уверен насчет минимальной версии, но меню «Цели» с созданием UWP, а после обновления также с Windows Application Package Project, не содержит 17134, а только более высокую версию
Установите Windows SDK версии 17134 из developer.microsoft.com/en-us/windows/downloads/sdk-архив.
Я отладил проект из вашего репо. Ссылки в проекте WPF были настроены неправильно. Я добавил новый проект WpfApp2 в решение с вашим точно таким же кодом и добавил приведенные ниже ссылки, и теперь он отлично работает: 1) "%ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System .Runtime.WindowsRuntime.dll" 2) "%ProgramFiles(x86)%\Windows Kits\10\UnionMetadata\10.0.17134.0\Windows.winmd"
Рад, что у тебя получилось. Я разместил это как ответ сейчас. Пожалуйста, отметьте как ответ, чтобы закрыть это.





Это исключение возникает при неправильной ссылке на библиотеки среды выполнения Windows из проекта, отличного от UWP (WPF, Winforms, Console и т. д.). Не забудьте сослаться на них следующим образом
Пробовали ли вы последовательно настроить все проекты в своем решении на одну и ту же архитектуру (x86 или x64)?