コマンドラインコンパイルを使用してアセンブリに強い名前を付けます
-
27-09-2019 - |
質問
VBCコンパイラを使用してアセンブリをコンパイルして署名するためにNantを使用しようとしています。プロジェクトがセットアップされており、VS2010でアセンブリコンパイルに正常に署名することができます。コマンドラインを使用して署名しようとすると、このエラーが表示されます。
vbc : error BC30140: Error creating assembly manifest: Error signing assembly -- The parameter is incorrect.
vbc.exeを使用してコンパイルして署名しない些細なシンプルなアプリ(Assemblyinfo.vbファイルのみ)を作成しました。
これが私のAssemblyInfo.vbです:
Option Strict Off
Option Explicit On
Imports System
Imports System.Reflection
<Assembly: AssemblyVersionAttribute("2010.05.18.0918"), _
Assembly: AssemblyCopyrightAttribute("Copyright © Patient First 2007"), _
Assembly: AssemblyCompanyAttribute("Patient First, Inc."), _
Assembly: AssemblyProductAttribute("Patient First Framework"), _
Assembly: AssemblyDelaySign(false), _
Assembly: AssemblyKeyFile("test.pfx"), _
Assembly: AssemblyTitleAttribute("PatientFirst.Framework")>
test.pfxは、assemblyinfo.vbと同じフォルダーにあります
これが私がそれをコンパイルしようとしている方法です:
vbc /target:library /verbose assemblyinfo.vb
私も使用してみました
vbc /target:library /verbose assemblyinfo.vb /keyfile:test.pfx
AssemblyDelaysignおよびAssemblyKeyFile属性なしで /keyfileパラメーターを使用してみました
AssemblyDeLaySignおよびAssemblyKeyFile属性を削除し、 /keyFileコマンドラインパラメーターを除去すると、正常にコンパイルされます。 VBCでこれを行う正しい方法は何ですか?
-edit:MSBuildは、AssemblyInfo.vbで定義したため、AssemblyKeyFile属性を持つことも嫌いであることがわかりました。同じ障害メッセージが表示されます。したがって、私が現在これを正しく構築することができる唯一の方法は、プロジェクトのプロパティを設定して、使用するキーファイルを伝え、アセンブリに署名することです。
-edit:これがVS2010内からプロジェクトの構築を機能させると思われる理由は、MSBuildが /keyfileを使用する代わりにコマンドラインでVBC.exeに渡された /keycontainerを渡しているためです。まだ /keyfileコマンドラインパラメーターの使用方法がわからない。
解決
MSBuildは、AssemblyInfo.vbで定義したため、AssemblyKeyFile属性を持つことも嫌いであることがわかりました。同じ障害メッセージが表示されます。したがって、私が現在これを正しく構築することができる唯一の方法は、プロジェクトのプロパティを設定して、使用するキーファイルを伝え、アセンブリに署名することです。
これが理由です 表示されます VS2010内からプロジェクトの構築を進めることは、MSBuildが /keyfileを使用する代わりにコマンドラインでVBC.exeに合格 /keycontainerを渡していることです。まだ /keyfileコマンドラインパラメーターの使用方法がわからない。