2011-03-22 64 views
3

我想編譯一個類(sqlAccess),聲明爲公共數據庫中的數據庫連接相關的幾個方法。我收到以下錯誤...在C編譯庫時出錯#

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

我改變了程序集名稱爲sqlAccessXYZ,現在它的工作,問題是與名稱。不知道到底是什麼問題,目前問題已解決。謝謝。

2

如果你給組件/項目一個不唯一的名字,.NET似乎會變得脾氣暴躁。在你的情況下,SqlAccess必須已經存在於.NET或引用程序集中。

解決方法是重命名您的程序集。

類似的問題: Weird error in C#

6

這爲我工作: 打開屬性|簽名選項卡。確保您已選中「簽署大會」並引用強名稱密鑰文件。保存並編譯項目/解決方案。 (引自MSDN)

+0

這對我所做的工作。如果可能的話,你應該提供MSDN鏈接。 – Krumia 2016-02-05 04:31:34

+0

這對我來說非常合適。 感謝您的回答。 – 2016-10-19 11:55:07

+0

爲我工作,謝謝! – gTiancai 2017-06-01 04:32:45

1

這是因爲SqlAccess程序集有一個引用,它允許內部訪問SqlAccess。它必須是這樣的[你會發現它的AssemblyInfo.cs]:

[assembly: InternalsVisibleTo("Name of assembly goes here, PublicKey=")] 

在編譯時,當編譯器不能找到具體的公鑰組件,您將收到錯誤,如「朋友訪問已授予......「。 爲了解決此問題,一種解決方案是從源程序集中刪除上述屬性,或添加新的公鑰並在源程序集中更改它。

1

此原因應該是您的解決方案中重新安裝/更新該特定dll,但是舊的dll沒有從您的解決方案和系統中正確刪除。 這就是爲什麼,當你改變大會名稱(從sqlAccesssqlAccessXYZ)它得到了工作