Старое и новое(пример кода на СИ# в SDK7 demo)

У меня есть два консольных приложения одно (назовем его) старое, второе новое. Первое старое(demo,пример из SDK7 на СИ#) в одной и тойже VS 2022 компилируется, собирается и подключаются динамические библиотеки(в нем есть в разделе обозреватель решений -раздел подключений "Ссылки").Второе новое в каторую из первого переноситься код один в один(создано автоматом VS 2022  в нем раздел "Зависимости".Вторая прога валит ошибку: исключение не обработано и System.MissingMethodException: "Method not found: 'System.Reflection.Emit.AssemblyBuilder System.AppDomain.DefineDynamicAssembly (System.Reflection. AssemblyName, System.Reflection.Emit.AssemblyBuilderAccess)'." может это быть результатом перехода от старых версий на новые? И как лечить это?Код один и тот же?!Самое интересное, что в одной и той же среде VS 2022 старый код можно спокойно и  запускать и компилировать и отлаживать, а в новой версии - валит ошибку.!!!!

Re: Старое и новое(пример кода на СИ# в SDK7 demo)

Добрый день.

Василий пишет:

может это быть результатом перехода от старых версий на новые?

Василий пишет:

в одной и той же среде VS 2022 старый код можно спокойно и  запускать и компилировать и отлаживать, а в новой версии - валит ошибку.!

Исходя из этой информации сложно сделать вывод о причинах такого поведения. Просьба уточнить для нас следующую информацию.

  • Уточните, пожалуйста, какая именно версия .NET используется в старом и новом проекте?

  • Вы упомянули, что используете пример из Guardant SDK 7. Уточните, пожалуйста, используете ли вы актуальную версию Guardant SDK 7 Update 9? Пробовали ли вы собрать стандартный пример из этой версии SDK (%Guardant_SDK%\SDK7\Samples\General Guardant API\C#)? Если да, пожалуйста, сообщите результат.

  • Если возможно, отправьте нам проект с открытым исходным кодом, чтобы мы могли протестировать его на нашем стенде (можно переслать сюда ссылкой на файлообменный сервис, или на электронную почту).

Re: Старое и новое(пример кода на СИ# в SDK7 demo)

Старый код написан на v.2

Новый код на net6.0

Re: Старое и новое(пример кода на СИ# в SDK7 demo)

Guardant SDK 7 Update 9 установлен. Как раз тестовый пример, который Вы указываете и создан на v.2. Он компилируется, редактируется и работает. Но переношу этот код в пустое консольное приложение и валит ошибку при инициализации hendla
GrdE nGrdE = GrdApi.GrdStartup(RemoteMode);
Handle grdHandle = GrdApi.GrdCreateHandle(GrdCHM.MultiThread);

При этом все верно
RemoteMode="Local"
nGrdE="OK"

Re: Старое и новое(пример кода на СИ# в SDK7 demo)

В составе Guardant SDK 7 update 9 по умолчанию стандартный пример пример C# использует .Net Framework и GuardantDotNetApi.dll.
Если вы переходите на .NET 5+ или .NET Core, вам необходимо использовать соответствующую версию библиотеки — GuardantDotNetCoreApi.dll.

Убедитесь, что при переходе на использование .Net 6 вы заменили библиотеку в проекте.

Re: Старое и новое(пример кода на СИ# в SDK7 demo)

Лекарство помогло. Библиотека GuardantDotNetCoreApi.dll подключилась и код заработал!

Re: Старое и новое(пример кода на СИ# в SDK7 demo)

Есть побочный эффект:
Unable to find an entry point named 'GrdFormatMessageUtf8' in DLL 'GrdAPI64.dll'
например, при вызове обработчика ошибки функции ErrorHandling

Re: Старое и новое(пример кода на СИ# в SDK7 demo)

Код функции ErrorHandling такой же как в примере(%Guardant_SDK%\SDK7\Samples\General Guardant API\C#)

Re: Старое и новое(пример кода на СИ# в SDK7 demo)

Василий пишет:

Есть побочный эффект:
Unable to find an entry point named 'GrdFormatMessageUtf8' in DLL 'GrdAPI64.dll'
например, при вызове обработчика ошибки функции ErrorHandling

Мы собрали пример C:\Program Files (x86)\Guardant\SDK7\Samples\General Guardant API\C# с использованием dotnet-sdk-6.0.428-win и библиотекой GuardantDotNetCoreApi.dll. Пример корректно запускается, ошибки не возникают.
Просьба убедиться, что все библиотеки для сборки были взяты из актуальной версии Guardant SDK 7 update 9 (особенно - GrdAPI64.dll, GuardantDotNetCoreApi.dll).

Также можно попробовать выполнить проверку сторонними инструментами, например

.\Dependencies_x64_Release>Dependencies.exe -exports "C:\Program Files (x86)\Guardant\SDK7\Lib\windows\x64\GrdAPI64.dll" | findstr /i "GrdFormatMessage"
         Name : GrdFormatMessage
         Name : GrdFormatMessageUtf8