3

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でこれを行う正しい方法は何ですか?

--編集: AssemblyInfo.vb で定義したように、MSBuild も AssemblyKeyFile 属性を持つことを好まないことがわかりました。同じ失敗メッセージが表示されます。したがって、現在これを正しくビルドできる唯一の方法は、プロジェクトのプロパティを設定して、使用するキー ファイルを指定し、アセンブリに署名することです。

--編集: これが VS2010 内からプロジェクトをビルドするように見える理由は、msbuild が /keyfile を使用する代わりに、コマンド ラインで /keycontainer を vbc.exe に渡しているためです。/keyfile コマンド ライン パラメーターの使用方法がまだわかりません。

4

1 に答える 1

1

MSBuildも、AssemblyInfo.vbで定義したように、AssemblyKeyFile属性を持つことを好まないことがわかりました。これにより、同じ失敗メッセージが表示されます。したがって、現在これを正しくビルドするための唯一の方法は、プロジェクトにプロパティを設定して、使用するキーファイルを指定し、アセンブリに署名することです。

これがVS2010内からプロジェクトをビルドするのに機能しているように見える理由は、msbuildが/keyfileを使用する代わりにコマンドラインで/keycontainerをvbc.exeに渡しているためです。/keyfileコマンドラインパラメータの使用方法がまだわかりません。

于 2010-10-04T14:11:38.913 に答える