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

程序集是在生成后事件之前还是之后用强名称签名的?

  •  0
  • Wollmich  · 技术社区  · 6 年前

    我正在修改程序集的堆栈大小,使用 editbin Increase stack size of main program or create a new thread with larger stack size for recursive code blocks?

    现在我问自己:程序集是在生成后事件之前还是之后用强名称签名的?因为 编辑bin 正在后生成事件中更改程序集。

    我的后期生成事件如下:

    "$(DevEnvDir)..\..\VC\bin\editbin.exe" /STACK:16777216 "$(TargetPath)"
    

    我的项目 .csproj 文件包含以下行:

    <PropertyGroup>
    
      <SignAssembly>true</SignAssembly>
      <AssemblyOriginatorKeyFile>..\STRONGNAME.snk</AssemblyOriginatorKeyFile>
    
    </PropertyGroup>
    
    <PropertyGroup>
      <PostBuildEvent>"$(DevEnvDir)..\..\VC\bin\editbin.exe" /STACK:16777216 "$(TargetPath)"</PostBuildEvent>
    </PropertyGroup>
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   Wollmich    6 年前

    程序集已用强名称签名 之前 生成后事件。这意味着 editbin 将更改该程序集,签名不再有效。

    sn.exe -v assembly.exe 会回来的 Failed to verify assembly -- Strong name validation failed ...

    获取有效签名程序集的解决方案,该程序集是使用 编辑bin 是使用 AfterCompile 事件并使用 sn .

    项目文件应该如下所示:

      <Target Name="AfterCompile">
        <Exec Command="
    &quot;$(DevEnvDir)..\..\VC\bin\editbin.exe&quot; /STACK:16777216 &quot;$(ProjectDir)obj\$(ConfigurationName)\$(TargetFileName)&quot;
    echo $(FrameworkSDKDir)bin\NETFX 4.5.1 Tools\
    &quot;$(FrameworkSDKDir)bin\NETFX 4.5.1 Tools\sn.exe&quot; -Ra &quot;$(ProjectDir)obj\$(ConfigurationName)\$(TargetFileName)&quot; &quot;$(SolutionDir)\STRONGNAME.snk&quot;
    " />
      </Target>
      <PropertyGroup>
        <PostBuildEvent>REM "See AfterCompile for stack size and resigning"</PostBuildEvent>
      </PropertyGroup>
    
    推荐文章