Я полностью и подробно описал проблему и вопрос в этой теме System.NullReferenceException в AppServiceResponse и System.BadImageFormatException для UWP с пакетом моста рабочего стола WPF , но до сих пор не найден ответ, что может вызвать это отказ.
Ссылка на тему Центр разработки Windows выше описывает сборку, показывает весь использованный код с примерами, включая попытки решить проблему, и другие подробности. Таким образом, я буду помещать только базовую часть задачи в эту тему, чтобы избежать перегрузки текста в посте, и сосредоточусь только на System.BadImageFormatException , что вызывает App.Connection null в Windows Проект пакета приложений с подключением из UWP к WPF приложение, созданное в соответствии с UWP с расширением рабочего стола - часть 3, урок (отправка запроса на рабочий стол) расширение, считывание значений ключа реестра и отправка запроса с расширения рабочего стола в UWP, обработка запросов из кода рабочего стола).
Я пытался исправить это по-разному (также описано выше), но не могу найти никакой причины, по крайней мере, чтобы узнать, где искать проблему, возможно, я что-то упустил, но я не могу найти связанные полезные ответы где угодно в интернете
Это сообщение, но System.Runtime.WindowsRuntime.dll
уже в ссылках:
System.BadImageFormatException HResult = 0x80131058 Сообщение = Возможно
не загружать файл или сборку 'System.Runtime.WindowsRuntime,
Версия = 4.0.10.0, Культура = нейтральная, PublicKeyToken = ... 'или
одна из его зависимостей. Ссылочные сборки не должны быть загружены для
выполнение. Они могут быть загружены только в загрузчике только для отражения
контекст. (Исключение из HRESULT: 0x80131058) Source = WpfApp1
StackTrace: в
WpfApp1.MainWindow.d__4.MoveNext () в
C: \ Users \ User \ Desktop \ UWP \ App \ WpfApp1 \ MainWindow.xaml.cs: линия
58 в
System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start [TStateMachine] (TStateMachine &
StateMachine) в
WpfApp1.MainWindow.InitializeAppServiceConnection () в
WpfApp1.MainWindow..ctor () в
C: \ Users \ User \ Desktop \ UWP \ App \ WpfApp1 \ MainWindow.xaml.cs: линия
37 Внутреннее исключение 1: BadImageFormatException: невозможно загрузить ссылку
сборка для исполнения.
Любой совет, руководство или пример будут очень полезны
РЕДАКТИРОВАТЬ 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 , ничего не делает с запрошенным приложением, просто показывает Console Launcher на секунду, без каких-либо сообщений и Вызывает код рабочего стола для чтения reg key выдает то же System.NullReferenceException
Setup все приложения в AnyCPU
, кроме UWP , в котором путь отладки бина отсекается, поскольку в раскрывающемся меню целей платформы из свойств решения или приложения включены только x64
, x86
, ARM
, ARM64
Console Launcher - AnyCPU
UWP - x86
Package - AnyCPU
WPF - AnyCPU
WinForms - AnyCPU
броски:
Код серьезности Описание Состояние подавления строки файла проекта
Ошибка MSB3270 Произошло несоответствие между архитектурой процессора
проекта строится "x86" и архитектура процессора
ссылка
"C: \ Users \ User \ Desktop \ UWP_BD \ UWP_BD \ Launcher \ Bin \ Debug \ Launcher.exe",
"AMD64". Это несоответствие может привести к сбоям во время выполнения. Пожалуйста примите к сведению
изменение целевой архитектуры процессора вашего проекта через
Диспетчер конфигурации, чтобы выровнять архитектуры процессора
между вашим проектом и ссылками, или взять зависимость от
ссылки с архитектурой процессора, которая соответствует целевой
Процессорная архитектура вашего проекта. Пакет C: \ Program Files
(x86) \ Microsoft Visual
Studio \ 2019 \ Community \ MSBuild \ Current \ Bin \ Microsoft.Common.CurrentVersion.targets 2106
и
Код серьезности Описание Состояние подавления строки файла проекта
Предупреждение Элемент 'PropertyGroup' в пространстве имен
'http://schemas.microsoft.com/developer/msbuild/2003' недействителен
дочерний элемент 'WapProjPath' в пространстве имен
http://schemas.microsoft.com/developer/msbuild/2003'. Список
ожидаемые возможные элементы: '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 .... Пакет C: \ Users \ Пользователь \ Рабочий стол \ UWP_BD \ UWP_BD \ Package \ Package.wapproj 49
и x64
:
Console Launcher - AnyCPU
UWP - x64
Package - AnyCPU
WPF - AnyCPU
WinForms - AnyCPU
Код серьезности Описание Состояние подавления строки файла проекта
Ошибка MSB3270 Произошло несоответствие между архитектурой процессора
проекта строится "MSIL" и процессорная архитектура
ссылка
"C: \ Users \ User \ Desktop \ UWP_BD \ UWP_BD \ UWP_Control \ Bin \ x64 \ Debug \ UWP_Control.exe",
"AMD64". Это несоответствие может привести к сбоям во время выполнения. Пожалуйста примите к сведению
изменение целевой архитектуры процессора вашего проекта через
Диспетчер конфигурации, чтобы выровнять архитектуры процессора
между вашим проектом и ссылками, или взять зависимость от
ссылки с архитектурой процессора, которая соответствует целевой
Процессорная архитектура вашего проекта. Пакет C: \ Program Files
(x86) \ Microsoft Visual
Studio \ 2019 \ Community \ MSBuild \ Current \ Bin \ Microsoft.Common.CurrentVersion.targets 2106
Я не уверен, может быть, мне следует изменить Минимальная версия на Anniversary Edition или Windows 10 (10.0; Build 10214) с созданием UWP , по умолчанию Windows 10 (10.0; сборка 10586) :
РЕДАКТИРОВАТЬ 2: ************************************** ************************************************** **********
Я использую Windows 10 Pro 64-bit OS, x64-basesd processor
с Visual Studio 2019 Version 16.1.4
, Target Framework: .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 AnniversaryРедакция (10.0; сборка 14393) такая же, как для Целевая версия , с предыдущей и новой сборкой без Часть 1 и Часть 2 код.
Также я следовал предложению Роя Ли в Исключение System.NullReferenceException в AppServiceResponse и System.BadImageFormatException для UWP с пакетом моста рабочего стола WPF в Центр разработки Windows , «Чтобы создать более простую демонстрацию для воспроизведения проблемы» .Итак, я создал новый пакет только с UWP и WPF в соответствии только с UWP с расширением рабочего стола - часть 3 с UWP_FullTrust_3 .
В предыдущей сборке я пропустил SingleInstance.cs в WPF приложении, но с включением этого кода в предыдущую или новую сборку (без передачи параметра «Запуск приложения» и «Передача»"), выдает ошибку:
Код серьезности Описание Ошибка состояния подавления строки файла проекта CS0017 В программе определено более одной точки входа.Скомпилируйте с / main, чтобы указать тип, содержащий точку входа.FullTrust C: \ Users \ Пользователь \ Рабочий стол \ UWP_BD2 \ Solution1 \ FullTrust \ SingleInstance.cs 57 Актив
в этой части кода:
[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
всего несколько часов назад.Что-то идет не так в меню Targets с созданием Windows Application Package Project
или UWP,
, который не содержит 17134
, с более высокой версией, я получил это сообщение:
По какой-то причине меню выбора цели не содержит 17134
, и оно также пропало для Windows Application Package Project
:
РЕДАКТИРОВАТЬ 4: **************************************************************************************************
Я установил SDK версии 17134 и выбрал 17134 для целевой версии с проектом пакета приложений Windows и созданием UWP.
Я добавил код, ссылки, настройки, ноЯ получил ту же ошибку!Я не уверен, что смогу это исправить.Возможно завершить тестовый проект, с реальным кодом поможет.
Итак, вот полное решение хранилище UWP_desktop_bridge .Это UWP и Console Launcher для WPF, основанные на Часть 1 , Часть 2 , Часть 3 из UWP-FullTrust урок Stefan Wick MSFT
Без InitializeAppServiceConnection();
сценариев из Часть 1 , Часть 2 работает, но с включением InitializeAppServiceConnection();
в WPF InitializeComponent();
чтобы получить функциональность Part 3 , я получил:
System.BadImageFormatException HResult = 0x80131058 Сообщение = Не удалось загрузить файл или сборку 'System.Runtime.WindowsRuntime, Version = 4.0.10.0, Культура = нейтральная, PublicKeyToken = ... 'или одна из ее зависимостей.Ссылочные сборки не должны загружаться для выполнения.Они могут быть загружены только в контексте загрузчика только для отражения.(Исключение из HRESULT: 0x80131058) Source = WpfApp1
StackTrace: в WpfApp1.MainWindow.d__4.MoveNext () в C: \ Users \ Пользователь \ Desktop \ UWP_desktop-bridge \ Solution1 \ WpfApp1 \ MainWindow.xaml.cs:59 в System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start [TStateMachine] (TStateMachine & stateMachine) в WpfApp1.MainWindow.InitializeAppServiceConnection () в WpfApp1.MainWindow..ctor \ \ \ Udesk_WD_Windows \ Users \ \ \ Users \ Up \ Users_Play_Windows \ Users \ Users_Windows \ Users_Play_P \\ WpfApp1 \ MainWindow.xaml.cs: строка 38 Внутреннее исключение 1: BadImageFormatException: невозможно загрузить эталонную сборку для выполнения.
и то же самое с SingleInstance.cs
, если используется эта часть кода:
[STAThread]
public static void Main(string[] args)
{
SingleInstanceManager manager = new SingleInstanceManager();
manager.Run(args);
}
Код серьезности Описание Ошибка состояния подавления строки файла проекта
Программа CS0017 имеет более одной определенной точки входа. Компилировать с
/ main для указания типа, который содержит точку входа.
Это такая же функциональность и отказ, как и в моих предыдущих проектах.
РЕДАКТИРОВАТЬ 5 : ************************************** ************************************************** **********
В настоящее время я тщательно создал сборку с копированием и вставкой на основе демоверсии ZhuMingHao / AppSerViceTest в ответе Нико Чжу - MSFT на связанный вопрос Отправить args распознавания речи. Результат в качестве параметра в пакете UWP desktop-bridge :
Отладка загружает UWP
и WPF
успешно. При нажатии на кнопку Click
с UWP
AppSerViceTest / AppServiceTest / MainPage.xaml.cs :
У меня такое же исключение:
System.NullReferenceException: 'Ссылка на объект не установлена на
экземпляр объекта.
Нажав на кнопку WPF
Send Message
, он просто закрывает приложение WPF
, UWP
StatusBlock
и InfoBlock
ничего не показывает.
Прямая отладка WPF
и нажатие кнопки Send message
, создает другое содержимое того же System.BadImageFormatException :
System.BadImageFormatException HResult = 0x80131058 Сообщение = Возможно
не загружать файл или сборку 'System.Runtime.WindowsRuntime,
Версия = 4.0.10.0, Культура = нейтральная, PublicKeyToken = ... 'или одна из ее
зависимостей. Ссылочные сборки не должны загружаться для выполнения.
Они могут быть загружены только в контексте загрузчика только для отражения.
(Исключение из HRESULT: 0x80131058) Source = WpfApp1 StackTrace:
в WpfApp1.MainWindow.d__5.MoveNext () в
C: \ Users \ User \ Desktop \ UWP \ UWP_DB_SR \ WpfApp1 \ MainWindow.xaml.cs: линия
91 в
System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start [TStateMachine] (TStateMachine &
stateMachine) в WpfApp1.MainWindow.Button_Click_1 (Отправитель объекта,
RoutedEventArgs e) в
System.Windows.RoutedEventHandlerInfo.InvokeHandler (Цель объекта,
RoutedEventArgs routedEventArgs) в
System.Windows.EventRoute.InvokeHandlersImpl (Источник объекта,
RoutedEventArgs args, Boolean reRaised) в
System.Windows.UIElement.RaiseEventImpl (отправитель DependencyObject,
RoutedEventArgs args) в
System.Windows.UIElement.RaiseEvent (RoutedEventArgs e) в
System.Windows.Controls.Primitives.ButtonBase.OnClick () в
System.Windows.Controls.Button.OnClick () в
System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp (MouseButtonEventArgs
e) в System.Windows.UIElement.OnMouseLeftButtonUpThunk (Object
отправитель, MouseButtonEventArgs e) в
System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler (Делегат
genericHandler, Object genericTarget) в
System.Windows.RoutedEventArgs.InvokeHandler (Обработчик делегата, Объект
цель) в
System.Windows.RoutedEventHandlerInfo.InvokeHandler (Цель объекта,
RoutedEventArgs routedEventArgs) в
System.Windows.EventRoute.InvokeHandlersImpl (Источник объекта,
RoutedEventArgs args, Boolean reRaised) в
System.Windows.UIElement.ReRaiseEventAs (отправитель DependencyObject,
RoutedEventArgs args, RoutedEvent newEvent) в
System.Windows.UIElement.OnMouseUpThunk (Отправитель объекта,
MouseButtonEventArgs e) в
System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler (Делегат
genericHandler, Object genericTarget) в
System.Windows.RoutedEventArgs.InvokeHandler (Обработчик делегата, Объект
цель) в
System.Windows.RoutedEventHandlerInfo.InvokeHandler (Цель объекта,
RoutedEventArgs routedEventArgs) в
System.Windows.EventRoute.InvokeHandlersImpl (Источник объекта,
RoutedEventArgs args, Boolean reRaised) в
System.Windows.UIElement.RaiseEventImpl (отправитель DependencyObject,
RoutedEventArgs args) в
System.Windows.UIElement.RaiseTrustedEvent (аргументы RoutedEventArgs) вSystem.Windows.UIElement.RaiseEvent (RoutedEventArgs args, Boolean trust) в System.Windows.Input.InputManager.ProcessStagingArea () в System.Windows.Input.InputManager.ProcessInput (InputEventArgs input) в System.Windows.Input.InputProviderSite(InputReport inputReport) в System.Windows.Interop.HwndMouseInputProvider.ReportInput (IntPtr hwnd, режим InputMode, временная метка Int32, действия RawMouseActions, Int32 x, Int32 y, колесо Int32) в System.Windows.Interop.HwndMouseInputProvessrt (hMnd)Сообщение WindowMessage, IntPtr wParam, IntPtr lParam, Boolean & обрабатываются) в System.Windows.Interop.HwndSource.InputFilterMessage (IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean и hWW.Int32 msg, IntPtr wParam, IntPtr lParam, Boolean & handled) в MS.Win32.HwndSubclass.DispatcherCallbackOperation (Object o) в System.Windows.Threading.ExceptionWrapper.InternalRealCall (обратный вызов делегата, объектные аргументы, Int32 SumArgs)tem.Windows.Threading.ExceptionWrapper.TryCatchWhen (источник объекта, обратный вызов делегата, аргументы объекта, Int32 numArgs, делегат catchHandler) в System.Windows.Threading.Dispatcher.LegacyInvokeImpl (приоритет DispatcherPriority, тайм-аут TimeSpan, метод делегата, аргументы объекта, аргументы объекта Objectgs)) в MS.Win32.HwndSubclass.SubclassWndProc (IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam) в MS.Win32.UnsafeNativeMethods.DispatchMessage (MSG & msg) в System.Windows.Impmep.Windows.Threading.Dispatcher.PushFrame (фрейм DispatcherFrame)
в System.Windows.Application.RunDispatcher (игнорирование объекта) в System.Windows.Application.RunInternal (окно окна) в System.Windows.Application.Run (окно окна) в System.Windows.Application.Run () в WpfApp1.App.Main () Внутреннее исключение 1: BadImageFormatException: невозможно загрузить эталонную сборку для выполнения.
РЕШЕНИЕ :**************************************************************************************************
Ответ решения, данный Стефаном Виком MSFT на вопрос, описанный также в теме WDC Исключение System.NullReferenceException в AppServiceResponse и System.BadImageFormatException для UWP с пакетом моста рабочего стола WPF в Система.BadImageFormatException с конкретным проектом связи приложения UWP для настольного моста , основанным на UWP с расширением рабочего стола - часть 3 пример UWP-FullTrust / UWP_FullTrust_3 / , а такжекак решатель моя копия Нико Чжу - MSFT решение ZhuMingHao / AppSerViceTest :
Мои неверные:
- Программные файлы (x86) \Справочные сборки \ Microsoft \ Framework.NETCore \ v4.5.1 \ System.Runtime.WindowsRuntime.dll
- Программные файлы (x86) \ Windows Kits \ 10 \ UnionMetadata \ Windows.winmd
Должны быть правильные настройки ссылок:
- ProgramFiles (x86)% \ Сборки ссылок \ Microsoft \ Framework.NETCore \ v4.5 \ System.Runtime.WindowsRuntime.dll
- ProgramFiles (x86)% \ Windows Kits \ 10 \ UnionMetadata \ 10.0.17134.0 \ Windows.winmd