我有一个使用/clr
开关的托管C++程序集,我正在尝试按照这个问题的要求签名,使用以下后期构建步骤:
sn -Ra "$(TargetPath)" MyKey.snk
然而,这会产生以下错误:
C:\Path\Assembly.dll does not represent a strongly named assembly
出了什么问题?
你是否在 AssemblyInfo.cpp 中标记了程序集以进行延迟签名?
[assembly:AssemblyKeyFileAttribute("MyKey.snk")];
[assembly:AssemblyDelaySignAttribute(true)];
Linker/Advanced/KeyFile
选项并期望它起作用 - 我需要使用sn.exe
来签名程序集,但是我还需要设置Linker/Advanced/KeyFile
选项。Linker/Advanced/KeyFile
属性页面中指定密钥文件sn.exe
作为后置构建步骤来签署程序集[assembly:AssemblyKeyFileAttribute("MyKey.snk")]
等同于在项目属性对话框中设置密钥文件)。AssemblyInfo.cpp
。以下是更完整的解决方案。#include "stdafx.h"
using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
using namespace System::Runtime::InteropServices;
using namespace System::Security::Permissions;
[assembly:AssemblyKeyFileAttribute("YourAssembly.snk")];
[assembly:AssemblyDelaySignAttribute(true)];
sn -Ra YourAssembly.dll YourAssembly.snk
。