0

このスレッドに従ってパブリッシャーポリシーファイルをgacに追加しようとしていますが、テストサーバーにファイルを追加しようとすると問題が発生します。

「アセンブリ'policy.3.0.assemblyname.dll'のマニフェストで指定されたモジュールが見つかりませんでした」というメッセージが表示されます。

私のポリシーファイルは次のようになります。

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="*assemblyname*"
                          publicKeyToken="7a19eec6f55e2f84"
                          culture="neutral" />
        <bindingRedirect oldVersion="3.0.0.0"
                         newVersion="3.0.0.1"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

助けてください!

ありがとう

ベン


(デフォルトを除いて)依存関係がない新しいアセンブリを使用して問題を最初から再現しました-すべてがローカル開発マシンで正常に動作します(そしてリダイレクトも正常に動作します)が、GACにポリシーファイルを追加すると同じエラーが発生しますサーバー上で!

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="TestAsm"
                          publicKeyToken="5f55456fdcc9b528"
                          culture="neutral" />
        <bindingRedirect oldVersion="3.0.0.0"
                         newVersion="3.0.0.1"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

次のようにリンクされています

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\al.exe /link:PublisherPolicy.xml /out:policy.3.0.TestAsm.dll /keyfile:..\..\key.snk /version:3.0.0.0
pause

助けてください!

4

3 に答える 3

3

うわー-わかりました。

これが何を意味するのか、もっと注意を払うべきだった

(MSDN) 方法: パブリッシャー ポリシーを作成する

重要な注意: 元の発行者ポリシー ファイルがアセンブリと同じディレクトリに配置されていない限り、発行者ポリシー アセンブリをグローバル アセンブリ キャッシュに追加することはできません。

その要件は、率直に言って、非常に奇妙であるため、登録されませんでした。gac に追加しようとしているアセンブリにコンパイルされた元のポリシー ファイルは、ポリシー アセンブリを追加するときに、ポリシー アセンブリと同じフォルダーにある必要があります。

于 2008-11-27T08:24:38.100 に答える
1

わかりました...いくつかの基本を確認したいだけです....

依存アセンブリの両方のバージョンが GAC にインストールされていますか?

[assembly: AssemblyVersion()] 属性のバージョン番号が正しいことを確認しましたか。

そして、[assembly: AssemblyVersion ()] を使用し、 [assembly: AssemblyFileVersion ("1.0.0.1")]を使用しませんでした。

更新:私の間違いです。GAC の最新バージョンのアセンブリのみが必要です。ここで試してみたところ、うまくいきました。私の他の唯一の考えは、公開鍵トークンが同じであること、およびアセンブリ名のスペルが間違っていないことを確認することです。

また、ポリシー ファイルを生成するときは、アセンブリ リンカーで /version スイッチを使用してバージョン番号を明示的に 3.0.0.0 に設定し、/ platformスイッチを指定しないようにしてください。例えば

al.exe /link:assembly.config /out:policy.3.0.assembly.dll 
         /keyfile:mykey.snk /version:3.0.0.0
于 2008-11-19T16:10:30.673 に答える
0

Wise を使用してポリシー アセンブリを GAC に追加するには、ポリシーの対象となるアセンブリを追加する場合と同じことを行います。したがって、ポリシー アセンブリを Wise の「グローバル アセンブリ キャッシュ」に追加すると、ポリシー ファイル (.config) がマシンの同じ場所にある限り、Wise はそれを GAC にも自動的に追加します。

于 2009-06-17T22:18:39.933 に答える