2016-09-13 21 views
0

ウェブアプリケーションをdnx451からdotnetcoreapp1.0にアップグレードしようとしています。コアCLRの 'タイプ'に 'GetTypeFromProgID'の定義がありません

このアプリケーションでは、古いライブラリ(少なくともライブラリだと思います)を使用する必要があります。このスニペットは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 }); 

アイデアや回避策はありますか?ありがとう!

EDIT:上記

コード参照ASP.NETコアWebアプリケーションから別のクラスライブラリです。ここでは、クラスライブラリの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": { } 
} 

そしてここでは、ASP.NET Webアプリケーションのコア用project.jsonです:

"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": {} 
} 
+1

あなたはもっと「コア」を求めました。誰も自分の携帯電話でレジストリクリーナーを実行していません。またはLinux。 .NETCoreを使用しても、Windowsインストールでしか動作しないコンポーネントに依存しているときは、意味をなさない。 .NETのフルバージョンをターゲットにするだけで、常にそのようなマシンで使用できます。 –

+0

@HansPassant私のフレームワークをnet461に変更しましたが、これはこのエラーを修正するようです。ご協力いただきありがとうございます。 –

答えて

0

Type.GetTypeFromProgIDあなたは依存関係に"System.Runtime": "4.1.0"を追加する場合に存在しますあなたのproject.jsonファイルのセクション。

apiが存在するかどうか、どこに存在するかを確認したい場合は、apisof.netを使用してください。とにかく

、ハンスは多分あなたがすべてでネットコアを対象とはならない、書いたように...

+0

"System.Runtime": "4.1.0"を追加しましたが、エラーを修正しませんでした。しかし、提案をありがとう。 –

+0

@johnluke project.jsonファイルを表示できますか?復元コマンドが失敗しましたか?私はちょうど新しいcoreappプロジェクトでそれを試して、それは動作します。 –

+0

私はproject.jsonファイルを追加しました。 dotnetリストアは、クラスライブラリとコアWebアプリケーションの両方で機能します。しかし、私はまだ同じ元のエラーを取得します。 –

0

私はnet461に私の枠組みを変え、それが働きました。

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

しかし、私は今、COMライブラリのロードに関連する問題を抱えているが、私はそれが別のエラーだと思うので、私は新しい質問を投稿します。そして、私はまだAspNetCoreパッケージを使用することができます。

関連する問題