2011-06-21 52 views
2

我有以下解決方案結構: 項目A 項目B(WCF) 項目C(單元測試)如何處理'File1.cs'中的'Foo'類型與'File2.dll'中的導入類型'Foo'衝突警告

我生成項目B的代理,那麼代理包含在項目A和項目C. 項目C編譯時,我得到了一千也引用了項目A. 結果,類型警告:

'File1.cs'中的'Foo'類型與impor衝突在'File2.dll'中鍵入'Foo'。

這個問題的最佳解決方案是什麼?我嘗試過使用#PRAGMA IGNORE,但在這種情況下找不到警告編號。

謝謝!

回答

2

最好的情況是使用不同的命名空間。

所以項目A

namespace Project.Library 

項目B

namespace Project.Service 

項目C

namespace Project.Test 

然後,你可以在衝突課堂上使用的別名。

例如,說Project.Library.User和Project.Service.User都存在。

您要訪問您服務您的圖書館的用戶類別,你可以這樣做:

using Library = Project.Library; 

namespace Project.Service 
{ 
    public class User 
    { 
      public int GetUserId() 
      { 
       Library.User myLibUser = new Library.User(); 
       return myLibUser.Id; 
      } 
    } 
} 
1

當你訪問你的類型,完全限定它(通過調用它通過命名空間(S)的.class所以不能有歧義

例如:

  • MyNamespace.Foo
  • YourNamespace.Foo

所以,你有相同的類名,但在不同的命名空間。

如果您在任何可能的情況下使用與導入的東西相同的名稱空間(這不太可能),那麼您或外部代碼提供者將不得不更改名稱空間。

1

我有同樣的問題。我正在使用VS 2010 Pro。我忽略了大約10個小時;不僅包括錯誤,還包括編譯時的錯誤。然後,BAM!

我所做的只是導航到Build選項卡並單擊清理解決方案。
問題解決。當然,你沒有在你的使用陳述中放置任何不需要處理的東西。從解決方案

0

刪除引用已編譯的文件\參考:)

0

在類屬性,從內容變化生成操作編譯

0

當你知道你在做什麼,你可以抑制與警告Pragma 。

我通過開始構建找到了錯誤代碼,然後查看輸出窗口。 確保您在下拉列表中選擇了「建立」。

相關問題