Fordyを使うと、なぜかアセンブリに署名するとマージに失敗するので、
非推奨ながら、ILMergeをもう一度、ということでやってみましたが・・・
まず一つ、試しにやってみると、できました! よかった。
それではと、同一ソリューション上の別のプロジェクトをビルド後にILMergeを使ってマージしようとすると失敗します。
失敗コード1
ビルド後イベントに、以下のコードが書いてありました。
if $(ConfigurationName) == Release (
del /S /Q "$(TargetDir)Merge\*.*"
md "$(TargetDir)Merge"
"C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" /internalize /ndebug /targetplatform:"v4,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2" /wildcards /out:"$(TargetDir)\Merge\$(TargetFileName)" "$(TargetDir)\$(TargetFileName)" "$(TargetDir)\"*.dll"
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x86\signtool.exe" sign -fd sha256 -f "C:\**********.pfx" /p password -tr http://timestamp.digicert.com -td sha256 -v "$(TargetDir)\Merge\$(TargetFileName)"
)
→ とりあえず、下の2行を削ってみました。 一番下はディジタル署名、その上はマージ、その上はMergeディレクトリ内の消去と、ディレクトリ作成です。
if $(ConfigurationName) == Release (
del /S /Q "$(TargetDir)Merge\*.*"
md "$(TargetDir)Merge"
)
→ なぜかこれが失敗します。
md "$(TargetDir)Merge"
これを消すとエラーが消えました!!
なぜディレクトリがつくれない?
ディレクトリの権限に問題がありました。ユーザーは読み取り専用になっていましたので、
それをフルコントロールにに変えることで解消しました。
Fody でアセンブリに署名したままマージする方法をご存じの方、教えてください!