我刚刚从VS2013升级到VS2015,并且出现了大量CS0436警告,这些警告似乎都与同一问题有关。
我正在将Web应用程序从VB缓慢迁移到C#,所以也许这确实很简单。我是C#的新手,所以请使用外行型答案...
我的解决方案的结构如下:
项目1-可重用方法(数据库访问等)
\ CommonDataAccessFunctionality.vb
Namespace MyCompany
Public Class CommonDataAccessFunctionality
Public Sub New(ByVal storedProcedureToRun As String)
' db stuff here '
End Sub
End Class
End Namespace
项目2-依赖项目1的Web适用(C#)
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,Version = 1.0.0.0,Culture = neutral,中键入'QrDataCommon',
PublicKeyToken = null”。使用中定义的类型
'D:\ Web \ wwwroot \ MyApp \ MyApp-InProgress-Person
WebApi \ QrCodes \ App_Code \ DataAccess.cs”。
我在这里阅读了许多有关项目引用自身的文章,但是,项目对话框中没有引用(已列出),在Project 2中只有对Project 1的依赖。此外,Project 2没有控件,等等。 ,即引用其他任何内容。
谁能给我一些指导?我不确定它是否有帮助,但是在对象浏览器中搜索“ QrDataCommon”时,我看到以下内容:
到目前为止基于帮助进行更新
如果我选择查看解决方案资源管理器中的所有文件,则\ bin \目录中有一个名为QrCodes.dll的文件,该文件在构建项目/解决方案时创建。我在隐藏的Debug文件夹中也看到了相同的内容。
如果我将
QrDataCommon
类重命名为完全唯一的名称(例如QrDataCommonTest123
),并进行清理/重建,则该错误会立即更新为使用新的类名。因此,这可能与应用程序构建目标位置有关吗?
最佳答案
警告CS0436
“ ... DataAccess.cs”中的“ QrDataCommon”类型与“ ...”中的导入类型“ QrDataCommon”冲突。使用在'... DataAccess.cs'中定义的类型。
大多数人可能是因为项目引用了自己(如您所指出);但是,在您的情况下,这是因为您的VB项目的类型具有完全相同的名称空间和名称-这是从VB到C#直接进行1:1端口的结果。
由于名称和名称空间相同,因此C#可以选择:应使用哪一个?它告知您,它是最合乎逻辑的选择,并且已在C#项目中选择了它-无论如何,这可能就是您想要的。
这些是您的选择:
好的选择:将类型移植到C#后,将其从VB项目中删除,然后重新编译VB项目。
不错的选择:如果您不将代码作为独立的可重用DLL分发(看起来好像不是),请change the root namespace of your C# code.
在完成端口之前,请忽略该错误。
最糟糕的选择:使用global namespace alias。
关于c# - 升级到VS2015时突然出现警告CS0436,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32966995/