我刚刚从VS2013升级到VS2015,并且出现了大量的CS0436警告,所有警告似乎与同一问题有关。
我正在慢慢地将Web应用程序从VB迁移到C#,所以这可能非常简单。我是C#的新手所以请使用外行型答案......
我的解决方案是这样构建的:
\ CommonDataAccessFunctionality.vb
Namespace MyCompany
Public Class CommonDataAccessFunctionality
Public Sub New(ByVal storedProcedureToRun As String)
' db stuff here '
End Sub
End Class
End Namespace
App_Code文件\ DataAccess.cs
using System.Data;
using System.Data.SqlClient;
namespace QrCodes.App_Data
{
public abstract class QrDataCommon : MyCompany.CommonDataAccessFunctionality
{
public QrDataCommon(string storedProcedureToRun)
: base(storedProcedureToRun)
{
}
}
public class QrDataGrabber : QrDataCommon
{
public QrDataGrabber(string storedProcedureToRun)
: base(storedProcedureToRun)
{
}
}
}
错误显示在这一行:
public class QrDataGrabber : QrDataCommon
警告CS0436
'D:\ Web \ wwwroot \ MyApp \ MyApp-InProgress-Person中的'QrDataCommon'类型 WebApi \ QrCodes \ App_Code \ DataAccess.cs'与导入的冲突 在'QrCodes中输入'QrDataCommon',Version = 1.0.0.0,Culture = neutral, 公钥=空”。使用中定义的类型 “d:\网络\ wwwroot的\ MyApp的\ MyApp的-INPROGRESS人称 的WebAPI \ QrCodes \ App_Code文件\ DataAccess.cs'。
我在这里阅读了许多关于引用自身的项目的帖子,但是,项目对话框中没有引用(列出的内容),项目2中只有一个依赖项目到项目1.此外,项目2没有控制等,引用其他任何东西。
任何人都可以给我一些指导吗?我不确定它是否有用,但在搜索'QrDataCommon'时在对象浏览器中我看到了:
如果我选择查看解决方案资源管理器中的所有文件,则在\ bin \目录中会出现一个名为QrCodes.dll的文件,该文件在构建项目/解决方案时创建。我也在隐藏的Debug文件夹中看到了相同的内容。
如果我将QrDataCommon
类重命名为完全唯一的类,例如QrDataCommonTest123
,并清理/重建,则错误会立即更新以使用新的类名。
因此,这可能与应用程序构建目标位置有关吗?
答案 0 :(得分:2)
警告CS0436 类型' QrDataCommon'在' ... DataAccess.cs'与导入类型的冲突' QrDataCommon'在' ...'。使用' ... DataAccess.cs'。
中定义的类型
大多数人可能会因为自己引用的项目而遇到这种情况(正如您所指出的那样);但是,在你的情况下,因为你的VB项目的类型具有完全相同的命名空间和名称 - 这是从VB到C#的直接1:1端口的结果。
由于名称和命名空间相同,C#可以选择:它应该使用哪一个?它告诉你它是最合乎逻辑的选择,并在你的C#项目中选择了一个 - 这可能是你想要它做的。
以下是您的选择:
答案 1 :(得分:1)
您有2个使用相同类名QrDataCommon
的DLL。重命名其中一个或不引用QrCodes.dll
。