237

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を検索するにはどうすればよいですか?

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

4

10 に答える 10

354

PowerShellを使用すると、次のステートメントを実行できます。

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

出力には、以下に示すように、バージョンカルチャ、およびPublicKeyTokenが提供されます。

MyDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a
于 2014-06-10T08:17:41.087 に答える
155

sn.exeユーティリティの使用:

sn -T YourAssembly.dll

または、アセンブリをReflectorにロードします。

于 2009-11-10T20:27:39.853 に答える
35

プロジェクトにDLLを追加している場合は、csprojファイルを開いてReferenceタグを確認できます。

例:

<Reference Include="System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
于 2017-04-26T13:16:40.010 に答える
25

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

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

于 2009-11-10T20:26:26.987 に答える
11

答えは非常に簡単です。.NETFrameworkツールを使用してsn.exeください。したがって、Visual Studio 2008コマンドプロンプトを開き、公開鍵を取得するdllのフォルダーをポイントします。

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

sn –T myDLL.dll

これにより、公開鍵トークンが提供されます。これは、アセンブリに強力に署名する必要がある場合にのみ機能することを覚えておいてください。

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

Microsoft(R).NETFrameworkストロングネームユーティリティバージョン3.5.21022.8
Copyright(c)MicrosoftCorporation。全著作権所有。

公開鍵トークンはb77a5c561934e089です
于 2013-07-02T11:16:19.873 に答える
5

Windowsエクスプローラーを使用して、C:\ Windows \ assemblyに移動し、必要なものを見つけます。プロパティから、PublicKeyTokenをコピーできます。

これは、インストールされているVisualStudioやその他のユーティリティに依存しません。

于 2014-11-04T04:07:55.433 に答える
3

さらに情報を追加しただけで、上記の場所にsn.exeユーティリティが見つかりませんでした。私の場合は、C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A\binにありました。

于 2014-10-15T15:01:16.617 に答える
3

Assembly.LoadFile(@ "C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ system.data.dll")。FullName

結果として

System.Data、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b77a5c561934e089

于 2018-02-26T11:26:50.987 に答える
1

@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");コードから

于 2018-12-01T13:39:13.583 に答える
0

以下の方法で確認することもできます。

実行に移動:公開鍵が必要なDLLのパスを入力します。2つのファイルがあります:1。__AssemblyInfo_.ini2.DLLファイル

この__AssemblyInfo_.iniファイルをメモ帳で開きます。ここに公開鍵トークンが表示されます。

于 2014-04-21T07:50:19.513 に答える