gpt4 book ai didi

c# - 升级到VS2015时突然出现警告CS0436

转载 作者:行者123 更新时间:2023-11-30 21:54:34 26 4
gpt4 key购买 nike

我刚从 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 Applicable (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

Warning CS0436
The type 'QrDataCommon' in 'D:\Web\wwwroot\MyApp\MyApp-InProgress-Person WebApi\QrCodes\App_Code\DataAccess.cs' conflicts with the imported type 'QrDataCommon' in 'QrCodes, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. Using the type defined in 'D:\Web\wwwroot\MyApp\MyApp-InProgress-Person WebApi\QrCodes\App_Code\DataAccess.cs'.

我在这里阅读了很多关于引用自身的项目的帖子,但是,项目对话框中没有引用(已列出),项目 2 中只有一个依赖项到项目 1。此外,项目 2 没有引用其他任何内容的控件等。

谁能给我一些指导?我不确定它是否有帮助,但在对象浏览器中搜索“QrDataCommon”时我看到了这个:

enter image description here

根据目前的帮助更新

如果我选择在解决方案资源管理器中查看所有文件,在\bin\目录中有一个名为 QrCodes.dll 的文件,它是在构建项目/解决方案时创建的。我在隐藏的 Debug 文件夹中也看到了相同的内容。

如果我将 QrDataCommon 类重命名为完全独特的名称,比如 QrDataCommonTest123,然后清理/重建,错误会立即更新为使用新的类名。

因此,这可能与应用程序构建目标位置有关吗?

最佳答案

Warning CS0436 The type 'QrDataCommon' in '...DataAccess.cs' conflicts with the imported type 'QrDataCommon' in '...'. Using the type defined in '...DataAccess.cs'.

大多数人可能会遇到这种情况,因为项目引用了自己(正如您所指出的);但是,在您的情况下,这是因为您的 VB 项目的类型具有完全相同的命名空间和名称 - 这是从 VB 直接 1:1 移植到 C# 的结果。

由于名称和命名空间相同,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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com