我正在尝试使用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
并尝试使用没有AssemblyDelaySign和AssemblyKeyFile属性的/ keyfile参数
如果我删除了AssemblyDelaySign和AssemblyKeyFile属性并且不使用/ keyfile命令行参数,那么编译就可以了。使用vbc执行此操作的正确方法是什么?
- 编辑: 我发现MSBuild也不喜欢具有AssemblyKeyFile属性,因为我在AssemblyInfo.vb中定义了它,它给出了相同的失败消息。所以我目前唯一可以正确构建它的方法是在项目上设置属性,告诉它使用哪个密钥文件并签署程序集。
- 编辑: 这似乎在VS2010中构建项目的原因是msbuild在命令行上将/ keycontainer传递给vbc.exe而不是使用/ keyfile。仍然不知道如何使用/ keyfile命令行参数。
答案 0 :(得分:1)
我发现MSBuild也不喜欢具有AssemblyKeyFile属性,因为我在AssemblyInfo.vb中定义了它,它给出了相同的失败消息。所以我目前唯一可以正确构建它的方法是在项目上设置属性,告诉它使用哪个密钥文件并签署程序集。
出现从VS2010内部构建项目的原因是msbuild在命令行上将/ keycontainer传递给vbc.exe而不是使用/ keyfile。仍然不知道如何使用/ keyfile命令行参数。