2015-07-10 44 views
0

我有一個使用構建腳本將編譯的DLL複製到另一個項目中的VS解決方案。基礎項目建立良好,並正確複製到目標。構建後在名稱空間中不可用的類

然而,目標項目將無法編譯,因爲它無法找到命名空間中的特定類:

foo.cs

namespace foo { 
    public class bar { 
     public static string myVar { 
      get { return "A string"; } 
     } 
    } 
} 

myPage.aspx.cs

using foo; 

namespace foo.foo2 { 
    partial class bar2 { 
     protected void Page_Load(object sender, EventArgs e) { 
      // can access foo.bar here in the source project but not once the DLL is compiled and copied to target 
      var myVar = bar.myVar; // The name 'bar' does not exist in the current context 
     } 
    } 
} 

爲什麼這會在源項目中正確編譯,但阻止目標f rom大廈?

編輯:如果我從項目中排除myPage.aspx,第二個項目生成很好。但我不應該那樣做。

+0

看看你的類是用相同還是低版本的.NET編譯的,否則你不能在你的項目中使用它。 –

+0

請嘗試重新清理,重建並添加參考。 –

+0

您是否嘗試過使用「Project Reference」而不是「Assembly Reference」?這可能是它在你的構建腳本複製dll之前編譯你的ASP.NET網站。 – Bringer128

回答

0

很有可能是引用了不正確的程序集。

確保您使用正確的物理組件。有時候,一個死的(舊)版本存在於(比如在GAC中),而這個版本被引用而不是相信的新版本。

最簡單的確認方法是將程序集文件重命名爲其他名稱並引用新命名的程序集。 bar.myVar應立即顯示。

相關問題