Forte nomeando uma montagem usando a linha de comando compilar
-
27-09-2019 - |
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.
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.