2010-05-18 11 views
3

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

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

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

вот мой 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 

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

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

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

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

ответ

1

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

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