从程序集中删除强签名

Rza*_*sar 3 c# .net-4.0

我在构建一些项目时遇到了麻烦.请考虑这种情况:

  1. 我有2个项目.例如A和B.
  2. 从A到B有一个参考
  3. B的项目是强烈签署的(我不希望它出于某些原因签名.所以我决定删除它的"签署程序集"的复选框)
  4. A项目中的AssemblyInfo.cs文件中有一行代码说:

    [assembly: InternalsVisibleTo("B,publicKey=0024......")]
    
    Run Code Online (Sandbox Code Playgroud)

    我改成了:

    [assembly: InternalsVisibleTo("B")]

    现在当我编译其中一个项目时,出现了一个错误并说:

朋友汇编参考'B'无效.强名称签名程序集必须在其InternalsVisibleTo声明中指定公钥.

我的问题在这里:编译器如何知道它有一天是签名的程序集?以及如何从B的装配中完全删除强烈签名并最终正确构建它们?

编辑:顺便请注意,这两个主题都没有强烈签名!因为我从那些项目的属性中删除了那些"签署程序集"复选框


当我将程序集的名称更改为某些错误的名称,如"bla_bla_bla"甚至不存在时,错误是一样的!
[assembly: InternalsVisibleTo("bla_bla_bla")]
我认为这个理论是正确的:
实际上B Project没有编译,如果它没有找到匹配的编译项目名称(当构建项目A时),编译器猜测B项目是用开发人员没有的公钥强烈签名的提供它!最后它会提示这种奇怪的错误!
由于B的原因引用了A,当我编译B项目时,它将首先编译它的引用(A项目)并且再次编译器将提示我该错误(与我编写项目A的时候相同)
但是它是`这不是真的,或者我的项目A有些问题.因为我从头开始两个新的简单项目,每一件事情都没有错误(即使我将[assembly:...]语句更改为无效的程序集名称)我彻底崩溃了

小智 6

我有同样的问题,并删除以下行为我修复它:

[assembly:AssemblyDelaySign(false)]
[assembly:AssemblyKeyName("")]