コマンドラインコンパイルを使用してアセンブリに強い名前を付けます

StackOverflow https://stackoverflow.com/questions/2857955

質問

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コマンドラインパラメーターの使用方法がわからない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top