警告"Y.cs中的类型X与Z.dll中导入的类型X冲突"

The*_*ask 35 .net c# types namespaces

我的项目的main.cs返回以下警告:

警告1"PATH\Extensions.cs"中的"Extensions.MessageDetails"类型与"path\lib.dll"中导入的类型"Extensions.MessageDetails"冲突.使用'path\Extensions.cs'中定义的类型.路径\ main.cs

我的项目有什么问题?如何摆脱警告?

我的项目代码具有以下结构:

Extensions.cs

namespace Extensions
{

    public class MessageDetails
    {
        public string message { get; set; }
        public string link { get; set; }
        public string picture { get; set; }
        public string name { get; set; }
        public string caption { get; set; }
        public string description { get; set; }
        public string userid { get; set; }
        public string username { get; set; }

        public object actions { get; set; }
        public object privacy { get; set; }
        public object targeting { get; set; }
    }

}
Run Code Online (Sandbox Code Playgroud)

lib.dll

namespace MyClassLib {

    public class MyClassLibFoo {
        public void foo(MessageDetails parameters) {
            /* .. */
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

main.cs

using MyClassLib;
using Extensions;

class Program
{
    static void Main(string[] args)
    {
        MessageDetails md = new MessageDetails();
    }
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*ake 58

在我的例子中,使用Visual Studio 2013,我发现我的一个类库已经开发了一个对它自己的引用.我认为这是在我向我的解决方案添加新项目时发生的,或者它是一个错误,但无论哪种方式导致了这个问题.

检查项目参考是否有任何循环引用.

  • 在2015年似乎仍然是一个问题,因为这是我的确切问题. (3认同)
  • 好答案。只是要添加到项目的引用中就是要检查的第一件事,因此在解决方案资源管理器中展开它,您可能会发现您的项目本身已添加为引用,选择并删除它。我的问题是由于ReSharper所致,在那儿我在各个地方都使用了重构工具,并设法以某种方式添加了该项目作为参考。 (2认同)

par*_*mar 31

它似乎Extensions.cs是构建lib.dll和你的main.exe的项目的一部分

从其中一个项目中删除它以解决此问题.

  • ty,由于某种原因,vs添加了我的项目作为参考. (3认同)

vap*_*guy 11

我有这样的问题,我已经从目标.NET Framework版本恢复4.5.24.0.

我的App_Code文件夹中的类具有在该文件夹中的其他类中调用方法的方法.当我创建一个名为"AppCode"的标准文件夹,并将我的类移入其中时,我不再遇到问题.

如果我重新创建"App_Code"文件夹并将我的类移回其中,我将再次遇到此问题.我确信它与我的.NET Framework版本有关,或者Visual Studio在最初构建/定位到另一个版本之后不能很好地改变它.

  • 究竟是什么帮助我在VS2017中使用框架版本4.5.2来解决这种奇怪的行为.Studio显示了疯狂的警告我在C#5项目中使用C#6功能,并且该文件夹中的类型与导入自身相冲突,并且linq语句丢失了一些内容,而ReSharper只对类中的方法进行了重命名重构. (2认同)