Nano Hash - криптовалюты, майнинг, программирование

CoreCLR, «Тип» не содержит определения для «GetTypeFromProgID».

Я пытаюсь обновить веб-приложение с dnx451 до dotnetcoreapp1.0.

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

//COMPILE ERROR: 'Type' does not contain a definition for 'GetTypeFromProgID'
var comType = Type.GetTypeFromProgID("ABCCrypto2.Crypto"); 

var abc = Activator.CreateInstance(comType);

var license = _config["AbcCrypto:License"];
var password = _config["AbcCrypto:Password"];

comType.InvokeMember("License", System.Reflection.BindingFlags.SetProperty, null, abc, new object[] { license });
comType.InvokeMember("Password", System.Reflection.BindingFlags.SetProperty, null, abc, new object[] { password });

var hashed = comType.InvokeMember("Encrypt", System.Reflection.BindingFlags.InvokeMethod, null, abc, new object[] { data });

Любые идеи или обходные пути? Спасибо!

ИЗМЕНИТЬ:

Приведенный выше код находится в библиотеке классов, отдельной от базового веб-приложения ASP.NET, которое на него ссылается. Вот project.json для библиотеки классов:

"buildOptions": {
    "emitEntryPoint": false
},
"dependencies": {
    "MyApp.Data": "1.0.0-*",
    "System.Net.Mail": "1.0.0-rtm-00002",
    "System.Runtime": "4.1.0"
},
"frameworks": {
    "netcoreapp1.0": { }
}

А вот и файл project.json для веб-приложения ASP.NET Core:

"buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
},
"dependencies": {
    "MyApp.Services": "1.0.0-*",
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
    "Microsoft.AspNetCore.Authorization": "1.0.0",
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Hosting": "1.0.0",
    "Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0",
    "Microsoft.AspNetCore.Http.Extensions": "1.0.0",
    "Microsoft.AspNetCore.Localization": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Routing": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.Session": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.Extensions.Caching.SqlServer": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
},
"frameworks": {
    "netcoreapp1.0": {
        "dependencies": {
            "Microsoft.NETCore.App": {
                "type": "platform",
                "version": "1.0.0"
            }
        }
    }
},
"runtimes": {
    "win10-x86": {}
}
13.09.2016

  • Вы просили больше ядра. Никому не нравится запускать очиститель реестра на своем телефоне. Или линукс. Использование .NETCore не имеет никакого смысла, если у вас есть зависимость от компонента, который может работать только при установке Windows. Просто нацельтесь на полную версию .NET, она всегда доступна на такой машине. 14.09.2016
  • @HansPassant Я изменил свою структуру на net461, и это, похоже, исправило эту ошибку. Спасибо за вашу помощь. 14.09.2016

Ответы:


1

Type.GetTypeFromProgID существует, если вы добавите "System.Runtime": "4.1.0" в раздел зависимостей в файле project.json.

Если вы хотите проверить, существует ли какой-либо API и где он существует, используйте apisof.net.

В любом случае, как писал Ганс, возможно, вам вообще не следует ориентироваться на чистое ядро.

13.09.2016
  • Я добавил System.Runtime: 4.1.0, но это не устранило ошибку. Спасибо за предложение. 14.09.2016
  • @johnluke Можете ли вы показать мне файл project.json? Команда восстановления прошла успешно? Я только что попробовал это с новым проектом coreapp, и он работает. 14.09.2016
  • Я добавил файлы project.json. dotnet restore работает как для библиотеки классов, так и для основного веб-приложения. Тем не менее, я все еще получаю ту же исходную ошибку. 14.09.2016
  • Я разместил ответ. Спасибо за помощь Дуди. 14.09.2016

  • 2

    Я изменил свою структуру на net461, и это сработало. И я все еще могу использовать пакеты AspNetCore:

    "frameworks": {
        "net461": {}
    }
    

    Однако у меня сейчас возникла проблема, связанная с загрузкой COM-библиотеки, но я думаю, что это отдельная ошибка, поэтому задам новый вопрос.

    14.09.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..