2014-06-28 73 views
1

在我正在建設的網站中,我在wwwroot的子目錄下有2個.cs文件。所述文件包含一堆實用函數並且屬於相同的命名空間(即:名稱空間myUtils)Asp.Net和命名空間分裂在多個.cs文件

是同一命名空間中這兩個文件的內容,我期望能夠使用其他類中的一些類反之亦然,好像所有的代碼是在一個大的文件,但顯然這是行不通的

示例代碼:

文件1:

using System; 
using System.Collections; 

namespace myincludes 
{ 
    public static class myConfig 
    { 
    public static String dbaddress = "127.0.0.1"; 
    } 
} 

文件2:

using System; 
using System.Collections; 

namespace myincludes 
{ 
    public static class myUtil 
    { 
     public static void doStuff() 
     { 
      String test = myConfig.dbaddress; 
     } 
    } 
} 

aspx頁面:

<%@ Page Language="C#" %> 
<%@ Import Namespace="System.IO" %> 
<%@ Import Namespace="System.Data" %> 
<%@ Import Namespace="System.Data.Odbc" %> 
<%@ Import Namespace="System.Security.Cryptography" %> 
<%@ Import Namespace="System.Collections.Generic" %> 
<%@ Assembly src="./includes/file1.cs" %> 
<%@ Assembly src="./includes/file2.cs" %> 

<%%> 

<html> 
<head></head> 
<body>hi</body> 
</html> 

我得到一個編譯錯誤說

Compiler Error Message: CS0103: The name 'myConfig' does not exist in the current context 

基本上不會大會SRC指令的這種用法的文檔。什麼似乎是常見的途徑是產生一個二進制DLL,但我寧願不...

+0

這與您的問題沒有直接關係,但應閱讀[MSDN上的C#編碼約定](http://msdn.microsoft.com/zh-cn/library/ff926074.aspx)。你的代碼似乎沒有遵循典型的C#約定,如果你打算與其他人分享你的代碼,這是常見的預期。它還通過分解不同的單詞(例如MyIncludes而不是myincludes)使您的代碼更易於閱讀。 – mason

+0

你有沒有想出答案?我也希望在運行時有多個由IIS編譯的* .cs文件。 – rocketsarefast

+0

你必須把所有東西放在一個文件中。是的,它很糟糕。 – Bracco

回答

0
public static class myUtil 
{ 
    public static string test { get{return myConfig.dbaddress;}} 

    public static string SomeMethod() 
    { 
     return myConfig.dbaddress; 
    } 

} 

你必須從有效位置調用的代碼。現在你的電話是在任何方法或財產之外。它不在有效位置。看看上面的例子,我把它包裝在一個屬性和一個方法中。

+0

對不起,我忘了把方法放在那裏,當我減少代碼,使其儘可能清晰。但它不起作用,我認爲它比代碼更像編譯器,所以要麼有一些很好的方法來告訴編譯器正確的消息或其他東西 – Bracco

0

你的課程應該像你想的那樣工作,沒有任何問題。我從你的彙編指令中假設你想在你的ASPX標記中使用myConfig?要做到這一點,而不是議會指令,只需導入您的命名空間:

<%@ Import Namespace="myincludes" %> 

然後你可以使用你的標記myConfig

dbaddress is: <%=myConfig.dbaddress %> 
0

這聽起來像你可能會使用一個網站項目,而不是預編譯的Web應用程序。如果您只是將一個.cs文件轉儲到一個隨機目錄中,ASP.NET將不會找到它,除非您明確指出它*。

嘗試將文件放置在web根目錄下的特殊目錄App_Code中。放置在那裏的源文件將被自動編譯。有關其他解釋,請參閱this MSDN page

*:例如,ASP.NET Web窗體頁面通常以指向源文件的@Page指令和 CodeFile屬性開頭。