Строгое присвоение имени сборке с помощью компиляции из командной строки

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


person BlackICE    schedule 18.05.2010    source источник


Ответы (1)


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

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

person BlackICE    schedule 04.10.2010