c# - 在构建后事件之前或之后使用强名称对程序集进行签名?
问题描述
我正在使用 修改程序集的堆栈大小editbin
,请参阅增加主程序的堆栈大小或为递归代码块创建一个具有更大堆栈大小的新线程?
现在我问自己:在构建后事件之前还是之后使用强名称对程序集进行了签名?因为editbin
正在构建后事件中更改程序集。
我的后期构建事件如下所示:
"$(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>
解决方案
在构建后事件之前使用强名称对程序集进行签名。这意味着editbin
将更改该程序集并且签名不再有效。
sn.exe -v assembly.exe
将返回Failed to verify assembly -- Strong name validation failed ...
获得使用修改的有效签名程序集的解决方法editbin
是使用AfterCompile
事件并使用sn
.
项目文件应如下所示:
<Target Name="AfterCompile">
<Exec Command="
"$(DevEnvDir)..\..\VC\bin\editbin.exe" /STACK:16777216 "$(ProjectDir)obj\$(ConfigurationName)\$(TargetFileName)"
echo $(FrameworkSDKDir)bin\NETFX 4.5.1 Tools\
"$(FrameworkSDKDir)bin\NETFX 4.5.1 Tools\sn.exe" -Ra "$(ProjectDir)obj\$(ConfigurationName)\$(TargetFileName)" "$(SolutionDir)\STRONGNAME.snk"
" />
</Target>
<PropertyGroup>
<PostBuildEvent>REM "See AfterCompile for stack size and resigning"</PostBuildEvent>
</PropertyGroup>
推荐阅读
- ios - Xcode - 存档产品转到其他项目而不是 iOS 应用程序
- oracle - Oracle DBMS_UTILITY.GET_TIME
- jmeter - 如何设置 -JlopCount =
在 Jmeter 非 GUI 模式下? - firebase - 如何处理异常“方法'onLogin'在null上被调用”
- node.js - 使用@kubernetes/client-node nodejs api部署虚拟服务
- javascript - 捕获第一个视频帧
- aws-lambda - Terraform API 网关与 Swagger (Localstack) 的集成
- mysql - 用于比较其他表值的 DB 表约束
- c# - 创建操作以根据字符串提供的属性名称分配属性
- google-analytics - BigQuery 中的 GA 实体店访问量?