Я пытаюсь использовать 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.