質問

次のようなプロバイダーを web.config ファイル内で再作成する必要があります。

<membership defaultProvider="AspNetSqlMemProvider">
  <providers>
    <clear/>
    <add connectionStringName="TRAQDBConnectionString" applicationName="TRAQ" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0"
         name="AspNetSqlMemProvider"
         type="System.Web.Security.SqlMembershipProvider, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"
    />
  </providers>
</membership>

ただし、このアセンブリを読み込むことができないというランタイム エラーが表示されます。これは、間違った PublicKeyToken を持っているためだと思います。アセンブリの PublicKeyToken を検索するにはどうすればよいですか?

あるいは、私はこれで完全に間違った方向に進んでいますか?

役に立ちましたか?

解決

使用する パワーシェル, 、次のステートメントを実行できます。

([system.reflection.assembly]::loadfile("c:\MyDLL.dll")).FullName

出力によって提供されるのは、 バージョン, 文化 そして パブリックキートークン 以下に示すように:

MyDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a

他のヒント

ます。SN.exe のユーティリティを使用して

sn -T YourAssembly.dll

または反射するにアセンブリをロードする。

あなたはDLLがプロジェクトに追加されている場合、

、あなたがcsprojファイルを開き、参照タグを見ることができます。

例:

<Reference Include="System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

sn -T <assembly> Visual Studio コマンドラインで。アセンブリがグローバル アセンブリ キャッシュにインストールされている場合は、次の場所に簡単にアクセスできます。 C:\Windows\assembly GAC アセンブリのリストでそれを見つけます。

特定のケースでは、タイプのフルネームとアセンブリ参照を混合している可能性があります。 MSDN.

答えは非常に簡単な使用は、.NET Frameworkツールsn.exeです。だから、のVisual Studio 2008のコマンドプロンプトを開き、あなたが公開鍵を取得したいDLLのフォルダを指して、

、次のコマンドを使用します。

sn –T myDLL.dll

このは、あなたの公開キートークンを提供します。一つのアセンブリが強く署名しなければならない場合、こののみ動作を覚えています。

C:\WINNT\Microsoft.NET\Framework\v3.5>sn -T EdmGen.exe

Microsoft (R) .NET Framework Strong Name Utility  Version 3.5.21022.8
Copyright (c) Microsoft Corporation.  All rights reserved.

Public key token is b77a5c561934e089
\ WINDOWS \アセンブリを、私は必要なものを見つける:

私はCに移動し、Windowsエクスプローラを使用します。プロパティからは、なPublicKeyTokenをコピーすることができます。

このは、Visual Studioに依存していないか、または任意の他のユーティリティがインストールされます。

はちょうどより多くの情報を追加して、私が言及した場所でます。SN.exeユーティリティを見つけることができませんでした、私の場合にはそれがCにあった:\プログラムファイル(x86の)\マイクロソフトのSDK \ Windowsの\ v7.0A \ binに

  

Assembly.LoadFile(@ "C:\ WINDOWS \ Microsoft.NET Frameworkの\ \ v4.0.30319がsystem.data.dll \")。フルネーム

タグになります
  

System.Data、バージョン= 4.0.0.0、文化=中立、   なPublicKeyToken = b77a5c561934e089

また、法に従うことによって確認することができます。

を実行します:あなたは、公開鍵を必要のあるDLLのパスを入力します。 あなたは、2つのファイルを検索します。 1. __AssemblyInfo_.ini 2. DLLファイル

メモ帳でこの__AssemblyInfo_.iniファイルを開き、ここでは、公開キートークンを見ることができます。

@CRiceはあなたなPublicKeyTokenに依存アセンブリのリストを取得するには、以下の方法を使用することができます言ったように、

public static int DependencyInfo(string args) 
{
    Console.WriteLine(Assembly.LoadFile(args).FullName);
    Console.WriteLine(Assembly.LoadFile(args).GetCustomAttributes(typeof(System.Runtime.Versioning.TargetFrameworkAttribute), false).SingleOrDefault());
    try {
        var assemblies = Assembly.LoadFile(args).GetReferencedAssemblies(); 

        if (assemblies.GetLength(0) > 0)
        {
            foreach (var assembly in assemblies)
            {
                Console.WriteLine(" - " + assembly.FullName + ", ProcessorArchitecture=" + assembly.ProcessorArchitecture);             
            }
            return 0;
        }
    }
    catch(Exception e) {
        Console.WriteLine("An exception occurred: {0}", e.Message);
        return 1;
    } 
    finally{}

    return 1;
}

私は一般的にのLinqPad のスクリプトとしてそれを使用します あなたは

としてそれを呼び出すことができます

コードからDependencyInfo("@c:\MyAssembly.dll");

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top