我有一个项目在Visual Studio中打开(这恰好是Enyim.Caching)。 该组件希望成为延迟签名。 事实上,它的欲望如此强烈地被延迟签名,我是无法强制的Visual Studio编译它毫不拖延地签署。
我选中“仅延迟签名”和“登录大会”上的Visual Studio项目属性框,并重修。 该组件仍被标记为延迟符号(如由所示sn.exe -v
)。
我已经卸载该项目,并验证了签名设置为false。 当重新加载项目,为“注册”和“延时登录”复选框被选中。
我核实,没有属性在程序集信息(或其他地方)存在,将导致此。
我已经在网上搜索了一个解决方案,但都没有发现。
我怎样才能做到这一点?
在这种情况下,这个问题是一个项目“公共属性”的参考。
里面的项目的.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>
遇到了同样的问题。 我禁用即使在“延迟仅注册”和“登录大会”,我还是得到了错误
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