从组件上取下签约(Remove signing from an assembly)

2019-07-21 20:01发布

我有一个项目在Visual Studio中打开(这恰好是Enyim.Caching)。 该组件希望成为延迟签名。 事实上,它的欲望如此强烈地被延迟签名,我是无法强制的Visual Studio编译它毫不拖延签署。

  1. 我选中“仅延迟签名”和“登录大会”上的Visual Studio项目属性框,并重修。 该组件仍被标记为延迟符号(如由所示sn.exe -v )。

  2. 我已经卸载该项目,并验证了签名设置为false。 当重新加载项目,为“注册”和“延时登录”复选框被选中。

  3. 我核实,没有属性在程序集信息(或其他地方)存在,将导致此。

  4. 我已经在网上搜索了一个解决方案,但都没有发现。

我怎样才能做到这一点?

Answer 1:

在这种情况下,这个问题是一个项目“公共属性”的参考。

里面的项目的.csproj文件是这个无害的小行:

<导入项目= “.. \构建\ CommonProperties.targets”/>

不幸的是,文件( CommonProperties.targets )指示VS重新写的性能,但它并没有提供,这是发生在用户界面的任何明确表示。

解决的办法是进入CommonProperties.targets文件并删除以下行:

<!-- delay sign the assembly if the PrivateKeyPath property is not specified -->
<PropertyGroup Condition=" '$(PrivateKeyPath)' == '' And '$(PrivateKeyName)' == ''">
    <AssemblyOriginatorKeyFile>..\public_key.snk</AssemblyOriginatorKeyFile>
    <DelaySign>true</DelaySign>
</PropertyGroup>

<!-- sign the assembly using the specified key file containing both the private and public keys -->
<PropertyGroup Condition=" '$(PrivateKeyPath)' != '' ">
    <AssemblyOriginatorKeyFile>$(PrivateKeyPath)</AssemblyOriginatorKeyFile>
    <DelaySign>false</DelaySign>
</PropertyGroup>

<!-- sign the assembly using the specified key container containing both the private and public keys -->
<PropertyGroup Condition=" '$(PrivateKeyName)' != '' ">
    <AssemblyOriginatorKeyFile></AssemblyOriginatorKeyFile>
    <DelaySign>false</DelaySign>
</PropertyGroup>

用以下内容替换这些行:

  <PropertyGroup>
    <DelaySign>false</DelaySign>
    <SignAssembly>false</SignAssembly>
  </PropertyGroup>


Answer 2:

遇到了同样的问题。 我禁用即使在“延迟仅注册”和“登录大会”,我还是得到了错误

error MSB3325: Cannot import the following key file: . The key file may be password protected".

而.csproj的是正确的:

<PropertyGroup>
    <SignAssembly>false</SignAssembly>
    <DelaySign>false</DelaySign>
</PropertyGroup>

然而,有下面的一个更靠谱行:

<SignAssembly Condition="Exists('..\xxx.pfx')">true</SignAssembly>

只有当我删除在.csproj的线路,或删除的磁盘上的文件,那么VS是OK去。

好像VS的错误 我使用的版本:

Microsoft Visual Studio 2010
Version 10.0.40219.1 SP1Rel
Microsoft .NET Framework
Version 4.5.50709 SP1Rel


文章来源: Remove signing from an assembly