即时创建我的程序集的签名副本
Posted
技术标签:
【中文标题】即时创建我的程序集的签名副本【英文标题】:Create a signed copy of my assembly on the fly 【发布时间】:2015-04-01 15:00:15 【问题描述】:我需要即时制作我的程序集的签名副本。
我已尝试通过在构建后事件中添加此脚本来做到这一点:
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】:我找到了一种方法来制作我的程序集的签名副本:我创建了新的解决方案配置:“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
【讨论】:
以上是关于即时创建我的程序集的签名副本的主要内容,如果未能解决你的问题,请参考以下文章