Сильное присвоение имени сборке с использованием командной строки - PullRequest
3 голосов
/ 18 мая 2010

Я пытаюсь использовать NAnt, чтобы скомпилировать и подписать сборку с помощью компилятора vbc. У меня настроен проект, и я могу успешно подписать сборку, компилируемую с VS2010. Когда я пытаюсь подписать его с помощью командной строки, я получаю эту ошибку:

vbc : error BC30140: Error creating assembly manifest: Error signing assembly -- The parameter is incorrect.

Я даже создал тривиально простое приложение (просто файл assemblyinfo.vb), которое не будет компилироваться и подписываться с использованием vbc.exe. Что я делаю не так?

вот моя сборкаinfo.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

и попытался использовать параметр / keyfile без атрибутов AssemblyDelaySign и AssemblyKeyFile

Если я удаляю атрибуты AssemblyDelaySign и AssemblyKeyFile и пропускаю параметр командной строки / keyfile, он прекрасно компилируется. Как правильно сделать это с VBC?

- EDIT: Я обнаружил, что MSBuild также не нравится иметь атрибут AssemblyKeyFile, как я определил его в AssemblyInfo.vb, он выдает такое же сообщение об ошибке. Таким образом, единственный способ, которым я могу сейчас сделать это для правильной сборки, - это установить свойства проекта, чтобы сообщить ему, какой файл ключа использовать, и подписать сборку.

- EDIT: Причина, по которой это похоже на работу по созданию проекта из VS2010, заключается в том, что msbuild передает / keycontainer в vbc.exe в командной строке вместо использования / keyfile. До сих пор не знаю, как использовать параметр командной строки / keyfile.

1 Ответ

1 голос
/ 04 октября 2010

Я обнаружил, что MSBuild также не нравится иметь атрибут AssemblyKeyFile, как я определил его в AssemblyInfo.vb, он выдает такое же сообщение об ошибке. Таким образом, единственный способ, которым я могу сейчас сделать это для правильной сборки, - это задать свойства проекта, чтобы сообщить ему, какой файл ключа использовать, и подписать сборку.

Причина, по которой это появляется для построения проекта из VS2010, заключается в том, что msbuild передает / keycontainer в vbc.exe в командной строке вместо использования / keyfile. До сих пор не знаю, как использовать параметр командной строки / keyfile.

...