3

管理者権限で cmd で次のコマンドを使用しています。

ILMerge.exe  /wildcards /log:ILMerge.log /allowdup 
             /targetplatform:"v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319" 
             /lib:"C:\SDK2016\SDK2016\Bin" 
             /lib:"packages\Microsoft.CrmSdk.Extensions.7.1.0.1\lib\net45" 
             /lib:"packages\log4net.2.0.5\lib\net45-full" 
             /keyfile:"Tools\Snk\XXX.snk" 
             /out:"c:\XXXALLMERGED.dll" 
             "c:\proj\alldlls\*.dll"

そして、ログ ファイルの最後に次のエラーが表示されます。

An exception occurred during merging:
Unable to load DLL 'mscorsn.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at System.Compiler.Writer.MscorsnStrongNameSignatureGeneration(String wszFilePath, String wszKeyContainer, Byte[] pbKeyBlob, Int32 cbKeyBlob, IntPtr ppbSignatureBlob, IntPtr pcbSignatureBlob)
   at System.Compiler.Writer.WritePE(String location, Boolean writeDebugSymbols, Module module, Boolean delaySign, String keyFileName, String keyName)
   at System.Compiler.Writer.WritePE(CompilerParameters compilerParameters, Module module)
   at ILMerging.ILMerge.Merge()
   at ILMerging.ILMerge.Main(String[] args)

私の targetframework は v4 で、フォルダーは "v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319" であるため、mscorsn.dll が存在するかどうかを確認しました。そしてそれは存在します。

では、何が問題になるのでしょうか。助けていただけますか?

4

5 に答える 5

6

私は同じ問題を抱えていて、それを修正することができました。

最初に、Visual Studio でアセンブリに署名するために .PFX ファイルを生成しました (プロジェクト プロパティ ウィンドウの [署名] タブを使用)。次に、公開鍵を .PFX ファイルから .SNK ファイルに抽出しました (sn.exe を使用)。

ILMerge.exe を使用して、生成された .SNK ファイルを使用しようとすると、"Unable to load DLL 'mscorsn.dll'"エラーが発生します。

.PFX と生成された .SNK ファイルを削除して修正しました。次に、次のように新しい .SNK ファイルを生成しました (VS で)。

  • プロジェクトのプロパティ > 署名
  • 厳密な名前のキー ファイルを選択します。<New>
  • .SNK ファイルのファイル名を指定します。
  • 「キー ファイルをパスワードで保護する」のチェックを外します < これでうまくいったようです。

これにより、新しい .SNK ファイルが生成され、そのファイルを ILMerge で使用すると、エラーが消えました。

HTH

于 2016-12-06T10:22:55.507 に答える
3

同じ問題。この回答Unable to load DLL mscorsn.dll with ILMergeが役に立ちました。

(まもなく: ilmerge には .NET3.5 がインストールされている必要があります)

于 2018-03-14T13:12:18.987 に答える
0

私は自分のマシンでこれを解決しようとして2日間まっすぐ髪を引っ張っていましたが、最終的に答えを見つけました. ここに貼り付けられた提案はどれもうまくいきませんでした。最終的に IlMerge github を検索したところ、MachineKeys フォルダーへの接続の可能性に関する投稿が適切なアクセス許可を持っていないことがわかりました。

同じ問題が発生し、何も機能しない場合は、次のディレクトリにアクセスしてください: C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys

そして、MachineKeys フォルダーの読み取りと書き込みのアクセス許可を設定します。

MachineKeys フォルダーのアクセス許可

このリンクは、適切に設定するのに役立ちました:

https://odetocode.com/blogs/scott/archive/2020/01/12/solving-access-denied-in-crypto-machine-keys.aspx

于 2020-08-10T12:02:05.713 に答える