我在构建一些项目时遇到了麻烦.请考虑这种情况:
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:...]语句更改为无效的程序集名称)我彻底崩溃了
| 归档时间: |
|
| 查看次数: |
5909 次 |
| 最近记录: |