「CS1595 已在多處定義」錯誤詳解

2022-02-08 23:05:33 字數 2185 閱讀 6360

本文的發布號曾為 chs318274

不管 web 服務是以 visual basic .net 還是 visual c# .net 編寫的,web 服務都使用 c# 編譯器編譯它們的**。因此,即使您在使用 visual basic .net 專案,也可能會收到此錯誤資訊。

請注意,如果您在一頁中合併srccodebehind屬性,也會收到類似的編譯器錯誤資訊。但是,這會被認為是開發人員的錯誤。如果您遇到本文介紹的特定問題,該錯誤資訊總是會指定 mscorlib.dll 程式集。

卷上的預設訪問控制列表授予 everyone 和 users 組讀取和列出檔案的許可權。但是,有時會刪除這些許可權以提供更加安全的環境。如果發生這種情況,csc.exe 則無法調撥路徑名稱。由於當前 asp.net 未向編譯器提供 選項,所以編譯器包含了程式集的多個例程。使用 visual basic .net 編譯器 (vbc.exe) 編譯資源時不會發生此問題。

本頁內容

症狀原因

解決方案

狀態更多資訊

參考當您使用 c# 編譯器 (csc.exe) 編譯 asp.net 資源時,可能會收到與以下某條錯誤資訊類似的編譯器錯誤資訊:

compiler error message:cs1595:'system.collections.arraylist' is defined in multiple places; using definition from 'c:\winnt\microsoft.net\framework\v1.0.3705\mscorlib.dll'

- 或 -

compiler error message:cs1595:'system.runtime.compilerservices.compilerglobalscopeattribute' is defined in multiple places; using definition from 'c:\windows\microsoft.net\framework\v1.0.3705\mscorlib.dll'

此問題可能會在第一次嘗試執行 visual c# .net web 應用程式或者執行 microsoft visual basic .net 或 visual c# .net web service 時發生。

發生此問題是因為 c# 編譯器無權訪問 mscorlib.dll 程式集的路徑中的資料夾。

若要解決此問題,請使用下列方法之一(按優先順序排列)。 方法 1:在 c# 編譯器定義中包括 /nostdlib 選項若要解決此問題,請將 c# 編譯器的編譯器定義修改為包括 /nostdlib 選項。/nostdlib 選項會禁止匯入 mscorlib.dll 程式集,mscorlib.dll 定義於整個system命名空間。

若要在計算機上的 c# 編譯器定義中包括 /nostdlib 選項,請按照下列步驟操作:

1.開啟 machine.config 檔案,然後找到部分。

2.在 c# 的定義中,新增compileroptions屬性,值為/nostdlib。例如:

備註compileroptions屬性不是增量。如果您需要在 web.config 檔案中或在給定頁上忽略此選項,除自定義內容之外,還必須新增 /nostdlib 選項。

備註:不能將此方法用於使用xmlserializer類或 web 服務的應用程式,因為xmlserializer使用的編譯器呼叫不繼承這些選項。 方法 2:為 aspnet 帳戶授予列出許可權要解決此問題,您還可以為下列帳戶之一授予"列出資料夾/讀取資料"許可權: (我認為應該是iis裡的站點目錄的許可權還有一種可能是% windir %\microsoft.net\framework\ 版本這個目錄,反正我把兩個目錄都設定了。

aspnet 帳戶。

•包括 aspnet 帳戶的組。

•程序標識,用於為 mscorlib.dll 程式集路徑(通常為 % windir %\microsoft.net\framework\ 版本)中的每個資料夾執行的 asp.net 輔助程序。這通常是的卷根目錄(例如 c:\),帳戶在此沒有許可權。

備註:如果使用了 /nostdlib 選項,而且沒有使用 web 服務,則不要使用此方法。

這種現象是設計使然。

編譯錯誤CS1595

編譯錯誤 說明 在編譯向該請求提供服務所需資源的過程中出現錯誤。請檢查下列特定錯誤詳細資訊並適當地修改源 編譯器錯誤資訊 cs1595 已在多處定義 bigteam.security.admin.controls.userlists ascx 使用 c windows microsoft.net f...