質問
この thread ですが、テストサーバーにファイルを追加しようとすると問題が発生します。
"アセンブリ '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
助けてください!
解決
すごい-わかった。
これが何を意味するのかに正確に注意を払うべきだった
重要な注意:出版社のポリシー アセンブリをグローバルに追加できません 元の場合を除き、アセンブリキャッシュ パブリッシャーポリシーファイルは アセンブリと同じディレクトリ。
この要件は、率直に言って、登録しなかったほど奇妙です。 gacに追加しようとしているアセンブリにコンパイルされた元のポリシーファイルは、ポリシーアセンブリを追加するときにポリシーアセンブリと同じフォルダーにある必要があります。
他のヒント
OK ...基本を確認したいだけです...
GACに依存アセンブリの両方のバージョンがインストールされていますか?
[assembly:AssemblyVersion()]属性のバージョン番号が正しいことを確認しました。
また、[assembly: AssemblyVersion ()]および NOT [assembly: AssemblyFileVersion (&quot; 1.0.0.1&quot;)を使用しました]。
更新:間違いです。GACの最新バージョンのアセンブリのみが必要です。ここで試してみたところ、うまくいきました。私の唯一の考えは、公開鍵トークンが同じであり、アセンブリ名のスペルを間違えていないことを確認することです。
また、ポリシーファイルを生成するときは、アセンブリリンカーの/ versionスイッチを使用して、バージョン番号を明示的に3.0.0.0に設定することを確認してください AND / platformスイッチを指定しないでください。例:
al.exe /link:assembly.config /out:policy.3.0.assembly.dll
/keyfile:mykey.snk /version:3.0.0.0
Wiseを使用してポリシーアセンブリをGACに追加するには、ポリシーの対象となるアセンブリを追加するのと同じことを行います。したがって、ポリシーアセンブリを「グローバルアセンブリキャッシュ」に追加します。 Wiseでは、ポリシーファイル(.config)がマシン上の同じ場所にある限り、Wiseは自動的にGACにも追加します。