代码之家  ›  专栏  ›  技术社区  ›  BlackICE

使用命令行编译对程序集进行强命名

  •  3
  • BlackICE  · 技术社区  · 16 年前

    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参数

    --编辑: 我发现MSBuild也不喜欢AssemblyKeyFile属性,因为我在AssemblyInfo.vb中定义了它,它会给出相同的失败消息。因此,我目前能够正确构建它的唯一方法是在项目上设置属性,告诉它要使用哪个键文件,并对程序集进行签名。

    --编辑: 从VS2010中生成项目似乎可行的原因是msbuild在命令行上将/keycontainer传递给vbc.exe,而不是使用/keyfile。仍然不知道如何使用/keyfile命令行参数。

    1 回复  |  直到 16 年前
        1
  •  1
  •   BlackICE    15 年前

    我发现MSBuild也不喜欢AssemblyKeyFile属性,因为我在AssemblyInfo.vb中定义了它,它会给出相同的失败消息。因此,我目前能够正确构建它的唯一方法是在项目上设置属性,告诉它要使用哪个键文件,并对程序集进行签名。

    原因是 在VS2010中构建项目的方法是msbuild在命令行中将/keycontainer传递给vbc.exe,而不是使用/keyfile。仍然不知道如何使用/keyfile命令行参数。