2012-11-26 55 views
1

在C#,我有一個組件(AssemblyA),其內部是在相同溶液中的另一組件(AssemblyB),我已經取得使用獲得FileNotFoundException異常在C#加載組件時

[assembly: InternalsVisibleTo(AssemblyB, PublicKey=1234566.......)] 

然而,AssemblyA可見打包到我們的安裝程序中,而AssemblyB仍然是我們不希望我們的客戶有權訪問的內部庫。大會B需要出席大會A才能正確加載?目前我得到一個FileNotFoundException,說明沒有找到程序集或它的一個依賴關係,我想知道是否是這種情況。

如果確實如此,是否有一種方法可以使模塊在沒有Assembly B的情況下加載?

+0

你在說.net你差點給你的客戶的源代碼,所以這有什麼關係? – rekire

+0

這是沒有建設性的。 –

+0

你是對的,但這只是一條評論... – rekire

回答

1

AssemblyA擁有InternalsVisibleTo(AssemblyB)這一事實並不意味着AssemblyA依賴於AssemblyB或需要它運行時才能加載。

如果您得到FileNotFoundException試圖加載AssemblyA,那是因爲另一個原因。

如果您發佈異常的堆棧跟蹤以及一些顯示您正在做什麼的代碼,這可能有助於某人在此解決異常。

此外,您可以使用諸如.NET自帶的Fusion Log Viewer(fuslgvw.exe)之類的工具來查看.NET程序集綁定失敗並確切知道哪個.dll文件丟失以及它的存在位置。

+0

堆棧跟蹤在這裏沒有幫助。堆棧跟蹤停止在它被炸燬的方法中,如果我運行調試器,它會激發第二次嘗試從「缺少」程序集實例化一個對象(甚至將對象設置爲null爆炸)。還值得一提的是,這隻發生在我們的程序安裝時,一切正常調試時工作正常。我知道該程序集工作,因爲我們的服務之一也使用程序集,並可以訪問DLL的罰款。 我想我會給Fusion Log Viewer一個鏡頭,看看顯示的是什麼。 –

相關問題