簡體   English   中英

如何處理'File1.cs'中的'Foo'類型與'File2.dll'中導入的類型'Foo'警告沖突

[英]How to deal with The type 'Foo' in 'File1.cs' conflicts with the imported type 'Foo' in 'File2.dll' warning

我具有以下解決方案結構:項目A項目B(WCF)項目C(單元測試)

我從項目B生成一個代理。該代理隨后包含在項目A和項目C中。項目C也引用項目A。因此,在編譯時,我收到了上千種類型的警告:

“ File1.cs”中的“ Foo”類型與“ File2.dll”中的導入類型“ Foo”沖突。

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

謝謝!

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

所以ProjectA

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;
          }
     }
}

當您訪問類型時,請完全限定它的類型(通過在namespace.sclass中進行調用,這樣就不會產生歧義。

例如:

  • MyNamespace.Foo
  • YourNamespace.Foo

因此,您具有相同的類名,但使用不同的名稱空間。

如果您有可能使用與導入內容中相同的名稱空間(這不太可能),那么您或外部代碼提供者都將不得不更改名稱空間。

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

我所做的只是導航到“ Build選項卡,然后單擊“干凈解決方案”。
問題解決了。 請確保,您不會在using語句中丟棄不需要處置的任何內容。

從Solution \\ References中刪除對已編譯文件的引用:)

在“類屬性”中,將“構建操作”從“內容”更改為“編譯”

當您知道自己在做什么時,可以使用Pragma 0246取消警告。

我通過開始構建然后在輸出窗口中查找找到了錯誤代碼。 確保在下拉列表中選擇了“構建”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM