在C#中编译库时出错

时间:2011-03-22 16:56:13

标签: c#-4.0

我正在尝试编译一个声明为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

可能是什么原因?有没有这个名字的方法?我是编程新手,所以我无法理解这一点。谢谢。

5 个答案:

答案 0 :(得分:7)

这对我有用: 打开“属性”|“签名”选项卡。确保选中“签署程序集”并引用强名称密钥文件。保存并编译项目/解决方案。 (引自MSDN)

答案 1 :(得分:2)

如果你给你的程序集/项目一个不唯一的名字,那么.NET似乎会变得脾气暴躁。在您的情况下,SqlAccess必须已存在于.NET或引用的程序集中。

修复方法是重命名程序集。

类似的问题: 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,现在它的工作正常,问题在于名称。不知道究竟是什么问题,现在问题已经解决了。感谢。