我正在尝试编译一个声明为public的类(sqlAccess),其中包含几个与数据库连接相关的方法。我收到以下错误...
Error 1 Friend access was granted to 'SqlAccess, PublicKey=00c8', but the output assembly is named 'SQLAccess, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Try adding a reference to 'SqlAccess, PublicKey=00c8' or changing the output assembly name to match. c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.dll SQLAccess
可能是什么原因?有没有这个名字的方法?我是编程新手,所以我无法理解这一点。谢谢。
答案 0 :(得分:7)
这对我有用: 打开“属性”|“签名”选项卡。确保选中“签署程序集”并引用强名称密钥文件。保存并编译项目/解决方案。 (引自MSDN)
答案 1 :(得分:2)
修复方法是重命名程序集。
类似的问题: Weird error in C#
答案 2 :(得分:1)
那是因为SqlAccess
程序集有一个引用,它授予对SqlAccess
的内部访问权限。它必须是这样的[你会在AssemblyInfo.cs中找到它]:
[assembly: InternalsVisibleTo("Name of assembly goes here, PublicKey=")]
在编译器无法找到具有特定PublicKey的程序集的编译期间,您将收到错误,例如“已授予朋友访问权限...”。 为了解决此问题,一种解决方案是从源程序集中删除上述属性,或添加新公钥并在源程序集中更改它。
答案 3 :(得分:1)
这背后的原因应该是您在解决方案中重新安装/更新该特定的dll,但旧的DLL未从您的解决方案和系统中正确删除。 这就是为什么,当你更改程序集名称(从 sqlAccess 到 sqlAccessXYZ )时它就可以工作了
答案 4 :(得分:0)
我将程序集名称更改为sqlAccessXYZ,现在它的工作正常,问题在于名称。不知道究竟是什么问题,现在问题已经解决了。感谢。