动态创建我的程序集的签名副本

时间:2015-02-02 15:54:40

标签: c# .net-assembly ildasm ilasm signed-assembly

我需要动态制作我的装配的签名副本。

我已经尝试通过在构建后事件中添加此脚本来实现此目的:

call "$(DevEnvDir)..\Tools\vsvars32.bat"
ildasm /all /out=MyAssemblySignedVersion.il $(TargetFileName)
ilasm /dll /key=MyAssembly.snk MyAssemblySignedVersion.il

但是,当我引用签名的程序集时,我得到一个运行时异常"无法加载文件或程序集' MyAssembly,Version = 1.2.5511.31417,Culture = neutral,PublicKeyToken = b025765091e877ec'或其中一个依赖项。系统找不到指定的文件。"

我尝试使用反射器从MyAssemblySignedVersion.dll创建项目,并且它没有编译,因为某些命名空间丢失了,可能是因为重新组装了反汇编的dll。这可能是相关的吗?

我该如何使这项工作? 非常感谢。

1 个答案:

答案 0 :(得分:1)

我找到了一种方法来签署我的程序集的签名副本:我已经创建了新的解决方案配置:" ReleaseSigned",并且在构建后的事件中我放了这个脚本:

if $(ConfigurationName) == Debug (
     echo "Building in DEBUG. Skipping signing..."
) else if $(ConfigurationName) == ReleaseSigned (
call "$(DevEnvDir)..\Tools\vsvars32.bat"
     msbuild.exe "$(ProjectPath)" /property:Configuration=Release
)

随后这篇帖子发生了变化:  same project different solution sign configuration