Pergunta

Estou tentando usar o NANT para compilar e assinar uma montagem usando o compilador VBC. Eu tenho um projeto configurado e sou capaz de assinar com êxito a montagem compilando com o VS2010. Quando tento assiná -lo usando a linha de comando, recebo este erro:

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

Eu até criei um aplicativo trivialmente simples (apenas um arquivo AssemblyInfo.vb) que não compilará e assinará usando o vbc.exe o que estou fazendo de errado?

Aqui está o meu 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 está localizado na mesma pasta que AssemblyInfo.vb

Aqui está como estou tentando compilá -lo:

vbc /target:library /verbose assemblyinfo.vb

Eu também tentei usar

vbc /target:library /verbose assemblyinfo.vb /keyfile:test.pfx

e tentei usar o parâmetro /keyfile sem os atributos de ASSENHODELAYSIGN e MONTA

Se eu remover os atributos AssemblyDelaySign e AssemblyKeyFile e deixar o parâmetro de linha de comando /keyfile, ele compila bem. Qual é a maneira correta de fazer isso com o VBC?

--Edit: Descobri que o MSBuild também não gosta de ter o atributo AssemblyKeyFile, pois o defini no AssemblyInfo.vb, ele fornece a mesma mensagem de falha. Portanto, a única maneira de fazer isso atualmente é que isso construa corretamente é definir propriedades no projeto para dizer qual arquivo chave usar e assinar a montagem.

--Edit: O motivo pelo qual isso parece funcionar o projeto de dentro do VS2010 é que o MSBuild está passando /KeyContainer para o vBC.exe na linha de comando em vez de usar /keyfile. Ainda não sei como usar o parâmetro da linha de comando /keyfile.

Foi útil?

Solução

Descobri que o MSBuild também não gosta de ter o atributo AssemblyKeyFile, pois eu o defini no AssemblyInfo.vb, ele fornece a mesma mensagem de falha. Portanto, a única maneira de fazer isso atualmente é que isso construa corretamente é definir propriedades no projeto para dizer qual arquivo chave usar e assinar a montagem.

A razão pela qual isso parece Para trabalhar a construção do projeto de dentro do VS2010, é que o msbuild está passando /keycontainer para vbc.exe na linha de comando em vez de usar /keyfile. Ainda não sei como usar o parâmetro da linha de comando /keyfile.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top