2012-12-03 46 views
5

我有一個運行在IIS中的C#網站。我在App_code目錄下有幾個.cs文件。我可以在所有* .aspx.cs和* .ascx.cs文件中引用它們。我沒有Visual Studio,我需要手動進行更改。在運行IIS的C#網站中添加新的.cs文件

我現在需要在.aspx.cs文件中使用Web服務。我使用wsdl.exe生成了一個代理類,並將其放在App_code目錄下。但我無法引用aspx.cs文件中的文件。我得到的錯誤

編譯器錯誤信息:CS0246:類型或命名空間名稱「TestSearchProxy」找不到(是否缺少using指令或程序集引用?)

代理犯規有任何名稱空間定義,我假設它是默認的名稱空間。我沒有在aspx.cs文件中添加任何「使用*」。

有人可以幫我解決這個問題嗎?

我嘗試另一種方法是:

我生成從代理文件一個dll使用CSC命令並置於bin目錄下的DLL。我仍然無法訪問代理類。

+0

爲什麼不使用Visual Studio(Express)? –

+0

我正在處理現有項目,並且sln文件與新版本的Visual Studio Express不兼容。我是C#和.net的新手。你能否幫助我在沒有Visual Studio的情況下進行這些更改? – Bhuvana

+0

你有MSBuild的版本嗎?您可以嘗試使用以下命令直接構建.proj文件:'msbuild/t:Build .csproj' –

回答

3

有關的第一次嘗試:

  • 檢查TestSearchProxy的命名空間,並明確地使用它:NameSpace.TestSearchProxy
  • 如果不工作,嘗試從生成的代理代碼來移除的命名空間。
  • 嘗試清除asp.net臨時目錄,這將使其從頭開始重新編譯app_code目錄。 (這通常是因爲你的IIS熱部署機制嘗試的第一件事是有點片狀)
    1. 停止IIS服務
    2. DEL/S「C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \臨時ASP.NET文件*。「
  • 檢查代理代碼中的編譯錯誤,特別是如果您使用的wsdl.exe可能來自比目標中部署的IIS/.net框架更新的框架版本平臺。

關於第二次嘗試,(把DLL bin目錄):

  • 您需要添加一個引用它,你能做到這一點從web.config文件您的ASPX網站的根目錄:

    <組件>

    <添加組件=「的AssemblyName,版本= 1.0.0.0,文化=中立,公鑰= 123456789ABCD1"/>

    < /組件>

    或者只是通過將其添加到GAC(GACUTIL -i dllname.dll)。

  • 您還應該檢查dll是否使用正確的.net版本和正確的體系結構(x86/x64)編譯以避免衝突,因爲這可能是舊系統(僅限4.0 clr/32bit )。